怎样生成数据库中不重复的固定位数的数字?

随机生成固定的位数(比如8位)的数字,
作为用户注册的uid存入数据库,
每个uid不重复,
但可以是12345678,12345677。
有种方法是随机生成8位数字,
然后查询数据库有无此数据,
有则重新生成在查询,
无则写入数据库,
这样的方式比较费时。
有没有更好的方法,
比如结合别的随机值、时间戳之类的。
求解题思路或者方法,可用php实现
慕哥6287543
浏览 461回答 2
2回答

动漫人物

通常数据库中存储的就是时间戳,也就是当前系统时间的毫秒数,然后除以1000,获取当前时间的秒数做为uid即可,因为如要存储的是毫秒的话,它占用数据库太长,用秒数即可保证唯一不重复。如果想让生成uid不只是数字还要有字母的话,可以将秒数转成16进制即可。

芜湖不芜

用户注册的uid,在某个范围自增就可以吧。假设用户注册的qps没有那么高,可以利用update+私有复杂数据的方法在mongodb模拟一个锁,锁保护“上次注册的用户的uid”数据,每次拿锁,加一,注册,将锁保护的uid+1,释放锁即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript