PHP怎么随机产生全局7~9位不重复的数,作为用户的唯一编号
PHP怎么随机产生全局7~9
位不重复的数,作为用户的唯一编号?
理论上有999999999 - 1000000 = 998999999
种编号。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
PHP怎么随机产生全局7~9
位不重复的数,作为用户的唯一编号?
理论上有999999999 - 1000000 = 998999999
种编号。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(8)
全局不重复,传统的 CGI 模式的 PHP 是做不到的。
可以根据具体场景考虑借用 Redis 的
incr
命令或 MySQL 的自增主键来实现。1. 唯一性不能完全依靠随机来实现,虽然重复的概率很小
2. 不推荐写入的时候先查询该随机数是否存在,效率低
3. 最好是时间戳+随机数,因为时间戳不会重复,再加上随机数,就比较完善了
理论上需要检查,可以把编号存入数据库, 然后查重。
也可以把编号存入Redis,然后查重,这样速度会非常快。
可以使用Mysql里面的ID自增去实现 这样每一个用户的id 就是唯一的
还是看一下业务场景好一点,
比如可以这样,就正常生成,生成之后塞进redis队列里,塞之前检查一下是不是重复..
要用的时候从队列里抽一个出来
7-9位数字,这么一点点空间,即要“随机”,又要“不重复”, 是不可能的。全部生成好,挨个分配吧。另自己 YY 一些业余方案了。
楼主是想弄一元购之类的编号吗?
如果是的话,一种方案是发布产品前,先把所有ID都生成,打乱后持久化到(DB或缓存里)