PHP 的 random_int 是否可以依赖于唯一的整数生成器(合理地)

Can PHP's random_int be relied for unique integer genrator (reasonably)

我有一个应用程序,每年需要生成大约 20 万个批次 ID。

我首先想到使用 uniqid() 来生成批次 ID,但是这将 return 是字符串,与整数相比,它将在数据库中占用巨大的 space。

因此,我的问题是,是否可以依靠 random_int(1, 2147483647) 来生成唯一编号?

仅供参考,通常 2147483647PHP_INT_MAX

正如@Alex Howansky 所提到的,如果您使用 uniquid(),数据库大小几乎不会增加。

如果您的要求接近 100% 唯一 ID,那么 random 4 位整数将不是唯一的。它将需要一些额外的位来随机和唯一。

我在我的应用程序中使用了以下函数。这具有更高的唯一性概率。 uniquid()

它使用 22 个字节而不是 13 个字节
function getUniqueId(){
  // will return 22 characters Unique string eg "5bcc2342652c2630171474"
  return str_replace('.', '', uniqid('',true));
}

如果您仍然需要只使用整数。然后,正如 Lawrence Cherone 所建议的那样,您应该使用自动增量。