UUID(通用唯一识别码,Universally Unique Identifier)是 128 位的标识符,通常写成 36 个字符的 8-4-4-4-12 十六进制形式,例如 550e8400-e29b-41d4-a716-446655440000,用于在不依赖中央分配的情况下生成几乎不会重复的 ID。下面说明速查要点。
UUID速查表
- 长度 128 位,标准文本为 32 个十六进制数字加 4 个连字符
- 第 13 个十六进制位表示版本号,如 4 表示随机生成
- 第 17 位表示变体,RFC 规范的 UUID 为 8、9、a、b 之一
- 版本 4 有 122 位随机,重复概率极低
- 版本 7 以毫秒时间戳开头,按时间有序,适合做数据库主键
- 版本:1、3、4、5、7
- 数量:一次生成多个
- 大写或小写
- 是否保留连字符
- 版本 3/5 需要命名空间和名称
示例
输入:同一 UUID 的不同写法
生成结果:204fbe85-4ec1-49ce-b8aa-ae6f4e1af149 / 204fbe854ec149ceb8aaae6f4e1af149 / {204FBE85-4EC1-49CE-B8AA-AE6F4E1AF149}
说明:标准形式是 8-4-4-4-12 的小写十六进制,也可去掉连字符或写成带花括号的大写形式。
注意事项
- 版本 4 适合大多数场景,但作为主键插入时会造成 B+ 树索引随机写入
- 需要排序或高写入性能时考虑版本 7
- 版本 1 会暴露生成机器的 MAC 地址和时间
- UUID 不是安全令牌,不要单独用于访问授权
- 存储时统一大小写,避免比较出错
常见类型
- 版本 1:时间戳 + MAC 地址
- 版本 3:命名空间 + 名称的 MD5
- 版本 4:随机生成,最常用
- 版本 5:命名空间 + 名称的 SHA-1
- 版本 6:调整字段顺序后的版本 1
- 版本 7:Unix 毫秒时间戳 + 随机,时间有序
- 版本 8:自定义格式
JavaScript 示例
下面是用 JavaScript 实现的写法,可以按需要修改:
// 现代浏览器与 Node.js 19+
const id = crypto.randomUUID();
console.log(id); // 例如 3b241101-e2bb-4255-8caf-4136c566a962
console.log(id.replace(/-/g, ''));
本站的UUID生成器工具可以直接在网页中使用,无需安装,适合快速得到和核对结果。
常见问题
【UUID 区分大小写吗?】不区分,规范建议输出小写,比较时忽略大小写。
【怎样从 UUID 看出生成时间?】版本 1、6、7 包含时间戳可以还原,版本 4 是纯随机的,没有时间信息。
【UUID 可以缩短吗?】可以转换为 Base58、Base64 等更短的表示,但原始值仍是 128 位。
文中示例可以在本站对应工具中核对。
标签: 实用工具