UUID 介绍
是什么:通用唯一识别码,用于生成全局唯一的标识符。
为什么:解决分布式系统中的唯一ID生成问题,避免冲突。
格式:32位十六进制,分组为 8-4-4-4-12 格式
Python 示例
python
import uuid
# 生成不同版本的 UUID
uuid1 = uuid.uuid1() # 基于时间戳和MAC地址
uuid4 = uuid.uuid4() # 完全随机
uuid5 = uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com') # 基于命名空间和名称
print(f"UUID1: {uuid1}")
print(f"UUID4: {uuid4}")
print(f"UUID5: {uuid5}")
# 验证和转换
text_uuid = "f47ac10b-58cc-4372-a567-0e02b2c3d479"
parsed_uuid = uuid.UUID(text_uuid)
print(f"解析: {parsed_uuid}")
print(f"十六进制: {parsed_uuid.hex}")
print(f"整数: {parsed_uuid.int}")
输出示例:
text
UUID1: a8098c1a-f86e-11da-bd1a-00112444be1e UUID4: f47ac10b-58cc-4372-a567-0e02b2c3d479 UUID5: fdda765f-fc57-5604-a269-52a7df8164ec 解析: f47ac10b-58cc-4372-a567-0e02b2c3d479 十六进制: f47ac10b58cc4372a5670e02b2c3d479 整数: 329800735698211629176373344437178950265
UUID 版本对比
| 版本 | 生成方式 | 特点 | 使用场景 |
|---|---|---|---|
| UUID1 | 时间戳 + MAC地址 | 可能泄露隐私 | 内部系统 |
| UUID4 | 完全随机 | 安全性好 | 推荐使用 |
| UUID3/5 | 命名空间哈希 | 确定性生成 | 需要可重现 |
实际应用
python
# 数据库主键
user_id = uuid.uuid4()
print(f"用户ID: {user_id}")
# 文件命名
filename = f"upload_{uuid.uuid4().hex}.jpg"
print(f"文件名: {filename}")
# 会话标识
session_token = uuid.uuid4().hex
print(f"会话令牌: {session_token}")
# 批量生成
uuids = [uuid.uuid4() for _ in range(3)]
print("批量生成:", uuids)
优势
- 全局唯一:几乎不可能重复
- 无需协调:各节点独立生成
- 标准格式:跨平台兼容
一句话总结:UUID 是生成全局唯一标识符的标准方法,其中 UUID4 因完全随机而最为安全推荐,广泛应用于数据库主键、文件命名等场景。