php 如何使随机数唯一性
有个业务逻辑需要生成一个只有数字的字符串,为了使这个字符串唯一
我已经把数字的长度调整为十几位,但是每次都生成几万个随机数,还是有重复的可能性
我想的是在这个逻辑上加上事务,可是可能产生几十万的事务,
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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
可以用uuid,参考:https://github.com/ramsey/uuid
推荐这个 SnowFlake
随机生成, 不会唯一的.
随机池就那么大, 总会碰撞的.
如果是同一台机器, 使用 uniqid() 就行.
其它的, 需要保存结果, 判断存在生.
你从哪感觉出mysql unique索引不好的? 判断依据是什么?
简单粗暴的方法:提前生成一堆的唯一字符串库,使用时直接从这个字符库中取