有个业务逻辑需要生成一个只有数字的字符串,为了使这个字符串唯一我已经把数字的长度调整为十几位,但是每次都生成几万个随机数,还是有重复的可能性我想的是在这个逻辑上加上事务,可是可能产生几十万的事务,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 回答
ibeautiful
TA贡献1993条经验 获得超5个赞
随机生成, 不会唯一的.
随机池就那么大, 总会碰撞的.
如果是同一台机器, 使用 uniqid() 就行.
其它的, 需要保存结果, 判断存在生.
你从哪感觉出mysql unique索引不好的? 判断依据是什么?
- 4 回答
- 0 关注
- 637 浏览
添加回答
举报
0/150
提交
取消