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

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

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

HUWWW 2019-03-30 09:33:09
随机生成固定的位数(比如8位)的数字,作为用户注册的uid存入数据库,每个uid不重复,但可以是12345678,12345677。有种方法是随机生成8位数字,然后查询数据库有无此数据,有则重新生成在查询,无则写入数据库,这样的方式比较费时。有没有更好的方法,比如结合别的随机值、时间戳之类的。求解题思路或者方法,可用php实现
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

通常数据库中存储的就是时间戳,也就是当前系统时间的毫秒数,然后除以1000,获取当前时间的秒数做为uid即可,因为如要存储的是毫秒的话,它占用数据库太长,用秒数即可保证唯一不重复。如果想让生成uid不只是数字还要有字母的话,可以将秒数转成16进制即可。
                            
查看完整回答
反对 回复 2019-03-30
?
缥缈止盈

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

用户注册的uid,在某个范围自增就可以吧。
假设用户注册的qps没有那么高,可以利用update+私有复杂数据的方法在mongodb模拟一个锁,锁保护“上次注册的用户的uid”数据,每次拿锁,加一,注册,将锁保护的uid+1,释放锁即可。
                            
查看完整回答
反对 回复 2019-03-30
  • 2 回答
  • 0 关注
  • 791 浏览
慕课专栏
更多

添加回答

举报

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