ID生成

来源:互联网 发布:java 动态代理参数 编辑:程序博客网 时间:2024/05/22 04:36
我们公司做项目,需要生成不重的ID。原来的方法是用UUID生成一个36位的ID。这样虽然长,但是能保证唯一,同时速度快。但是向用户展示不太好看。用户有什么问题需要咨询客服的时候也不好读出来。因此这一版本考虑重新制定ID生成规则。
很自然就会想到单独建立一个表,用于记录每一个人连续递增索引。这种方式有优点,就是生成的ID可以很短,并且分析ID只能分析这个人的交易量,但是能分析出用户注册数量来。打乱顺序来记录是个方法。
从网上浏览了一些文章,里面介绍了各种方法,但是没有特别合适的,结合我们用的redis服务。我们最终采用的方案是年月日时分秒+四位数字。前面的就是生成ID的时间。后面的四位数字采用redis上递增数字的后三位,加上一位随机干扰数字。当然干扰数字放在三位数字中倒数第二位和倒数第三位之间。这个方案能保证我们每秒生成的ID数小于1000的情况下生成的ID不重。就算是redis宕机重启后,由于时间向前走了,ID也不会重复。同时竞争对手也很难通过我们的ID看出我们的交易量。
0 0
原创粉丝点击