为了账号安全,请及时绑定邮箱和手机立即绑定

php 如何使随机数唯一性

php 如何使随机数唯一性

PHP
哈士奇WWW 2019-03-18 18:06:56
有个业务逻辑需要生成一个只有数字的字符串,为了使这个字符串唯一我已经把数字的长度调整为十几位,但是每次都生成几万个随机数,还是有重复的可能性我想的是在这个逻辑上加上事务,可是可能产生几十万的事务,MySQL 表方面加上唯一约束感觉也不太好每次都判断唯一性效率不行,而且这是每次产生几十万的数据还是这个问题 :有什么好的方式可以使随机数唯一性期待所有的回复 感谢! /** * 生成随机数 速度约 7s / 100w (每7s 100万) * @param [type] $len [description] * @return [type] [description] */ public static function rand_int($len = 16) { $str = ''; for($i = 0; $i < $len; $i++) { $str .= rand(0,9); } return $str; }
查看完整描述

4 回答

?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

推荐这个 SnowFlake

查看完整回答
反对 回复 2019-03-18
?
ibeautiful

TA贡献1993条经验 获得超5个赞

随机生成, 不会唯一的.
随机池就那么大, 总会碰撞的.

如果是同一台机器, 使用 uniqid() 就行.

其它的, 需要保存结果, 判断存在生.

你从哪感觉出mysql unique索引不好的? 判断依据是什么?

查看完整回答
反对 回复 2019-03-18
?
GCT1015

TA贡献1827条经验 获得超4个赞

简单粗暴的方法:提前生成一堆的唯一字符串库,使用时直接从这个字符库中取

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 637 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信