随机UUID

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 因完全随机而最为安全推荐,广泛应用于数据库主键、文件命名等场景。