PHP怎么随机产生全局7~9位不重复的数,作为用户的唯一编号

发布于 2022-09-05 08:41:43 字数 108 浏览 33 评论 0

PHP怎么随机产生全局7~9位不重复的数,作为用户的唯一编号?
理论上有999999999 - 1000000 = 998999999 种编号。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

別甾虛僞 2022-09-12 08:41:43

全局不重复,传统的 CGI 模式的 PHP 是做不到的。
可以根据具体场景考虑借用 Redis 的 incr 命令或 MySQL 的自增主键来实现。

朕就是辣么酷 2022-09-12 08:41:43

1. 唯一性不能完全依靠随机来实现,虽然重复的概率很小

2. 不推荐写入的时候先查询该随机数是否存在,效率低

3. 最好是时间戳+随机数,因为时间戳不会重复,再加上随机数,就比较完善了

锦上情书 2022-09-12 08:41:43

理论上需要检查,可以把编号存入数据库, 然后查重。
也可以把编号存入Redis,然后查重,这样速度会非常快。

无力看清 2022-09-12 08:41:43

可以使用Mysql里面的ID自增去实现 这样每一个用户的id 就是唯一的

仅此而已 2022-09-12 08:41:43

还是看一下业务场景好一点,
比如可以这样,就正常生成,生成之后塞进redis队列里,塞之前检查一下是不是重复..
要用的时候从队列里抽一个出来

月下伊人醉 2022-09-12 08:41:43

7-9位数字,这么一点点空间,即要“随机”,又要“不重复”, 是不可能的。全部生成好,挨个分配吧。另自己 YY 一些业余方案了。

夏末的微笑 2022-09-12 08:41:43

楼主是想弄一元购之类的编号吗?
如果是的话,一种方案是发布产品前,先把所有ID都生成,打乱后持久化到(DB或缓存里)

瞳孔里扚悲伤 2022-09-12 08:41:43
mt_rand(1000000, 999999999);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文