有個(gè)業(yè)務(wù)邏輯需要生成一個(gè)只有數(shù)字的字符串,為了使這個(gè)字符串唯一我已經(jīng)把數(shù)字的長度調(diào)整為十幾位,但是每次都生成幾萬個(gè)隨機(jī)數(shù),還是有重復(fù)的可能性我想的是在這個(gè)邏輯上加上事務(wù),可是可能產(chǎn)生幾十萬的事務(wù),MySQL 表方面加上唯一約束感覺也不太好每次都判斷唯一性效率不行,而且這是每次產(chǎn)生幾十萬的數(shù)據(jù)還是這個(gè)問題 :有什么好的方式可以使隨機(jī)數(shù)唯一性期待所有的回復(fù) 感謝!
/**
* 生成隨機(jī)數(shù) 速度約 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貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
隨機(jī)生成, 不會(huì)唯一的.
隨機(jī)池就那么大, 總會(huì)碰撞的.
如果是同一臺(tái)機(jī)器, 使用 uniqid() 就行.
其它的, 需要保存結(jié)果, 判斷存在生.
你從哪感覺出mysql unique索引不好的? 判斷依據(jù)是什么?
- 4 回答
- 0 關(guān)注
- 654 瀏覽
添加回答
舉報(bào)
0/150
提交
取消