UUID 生成器

使用基于时间戳的算法生成通用唯一标识符(UUID),防止重复。

键盘快捷键: R 重新生成 UUID 或 C 复制 UUID

UUID 工作原理

UUID v1(基于时间戳): 使用当前时间戳(自 1582 年 10 月 15 日起的 100 纳秒间隔)结合 MAC 地址或随机节点标识符。这确保了不同机器之间的唯一性,即使同时生成也能防止重复。

UUID v4(随机): 使用加密强度的随机数。虽然理论上可能出现重复,但概率极低(2^122 分之一),在实际应用中可以忽略不计。

UUID v7(现代时间戳): 最新的 UUID 版本,结合了 Unix 时间戳(48 位)和随机数据(74 位)。这提供了 v1 的时间排序优势,同时保持 v4 的隐私性,使其成为数据库主键的理想选择。

格式: UUID 是 128 位值,以 32 个十六进制数字显示,格式为: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

常见用例

UUID(也称为 GUID)为您提供了几乎无限的唯一标识符池,无需与中央机构协调。以下是一些常见的使用场景:

数据库主键

UUID 允许多个服务或分片独立生成键而不发生冲突。UUID v7 越来越受欢迎,因为其前导时间戳让插入保持局部性友好、索引紧凑。

分布式系统

当事件由多个节点产生时,每个事件一个 UUID 可以避免集中式序列的瓶颈,并使日志在服务边界之间保持可追踪。

面向公众的标识符

URL 中的 UUID v4 不会像递增整数那样暴露存在多少条记录,也不会带来枚举攻击的风险。

幂等性键

客户端为每个请求生成一个 UUID,这样服务器就可以识别重试并避免两次处理相同的操作。

您应该使用哪个版本?

  • 如果您想要简单的随机性而不需要其他属性,请使用 v4 - 这是大多数应用程序最安全的默认选项。
  • 如果标识符将成为数据库主键,或存储在任何插入顺序很重要的索引中,请使用 v7。嵌入的时间戳使行聚集在一起,在大规模下显著提高写入性能。
  • 仅在您特别需要从时间戳和节点标识符派生标识符时使用 v1。在现代应用程序中,对于相同的用例,v7 是更好的选择,并且不会泄露 MAC 地址。

常见问题

什么是 UUID?

UUID(通用唯一标识符)是一个 128 位值,通常以 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 形式的 32 个十六进制数字书写。不同的版本使用不同的策略(随机、时间戳或两者结合)生成该值。

UUID 和 GUID 有什么区别?

它们指的是同一个东西。GUID(全局唯一标识符)是 Microsoft 生态系统中使用的名称;UUID 是 RFC 4122 和其他地方使用的名称。格式和唯一性保证是相同的。

UUID 保证是唯一的吗?

从数学上讲并不能绝对保证 - 但 UUID v4 的碰撞概率大约为 2^122 分之一,远低于任何实际应用的阈值。对于 UUID v1 和 v7,时间戳和节点/随机位在实际中防止了碰撞。

我应该为数据库主键使用 UUID v4 还是 UUID v7?

UUID v7 通常更适合作为主键。因为它的前导位是 Unix 时间戳,新行在磁盘上插入的位置彼此靠近,这使索引保持紧凑、写入速度更快。仅在插入顺序绝对不能被推断时才使用 v4。

我需要 UUID v1 生成器吗?

很少需要。UUID v1 包含生成机器的 MAC 地址(或随机替代值),可能会泄露信息。UUID v7 提供相同的时间可排序属性,却没有这种顾虑,如今几乎总是更好的选择。

这个 UUID 生成器可以免费使用吗?

是的。所有生成都在您的浏览器中进行,没有速率限制,也不需要账户。您可以在这里生成单个 UUID,或切换到批量生成器一次生成最多 500 个。

我们几乎不使用 Cookie

我们仅使用严格必要的 Cookie,这些 Cookie 可增强网站安全性并改善您的用户体验。我们不会跟踪您的行为或活动。