您好,欢迎来到年旅网。
搜索
您的当前位置:首页redis 锁生成唯一code(java)

redis 锁生成唯一code(java)

来源:年旅网

        工作中经常需要生成按照顺序的唯一的code,这种数据往往跟日期大小等有关,但是又不能把它们设置为主键,这样就会导致新增的时候可能会并发重复,例如  我要生成一个code为 PO-20191012-1133   这样的一个按照顺序来的code(标识-日期-自增),这样就要我们在代码层生成code然后保存到数据库,java中并发不高的时候我们可以通过查询数据库中的code,获取当前最新code然后通过Atomic来创建新的code,这种一定程度上可以减少错误的发生,但是很显然,查询数据库的过程是有时间的,这个时间并发就可能会出错,所以我们用redis来代替查询数据库,redis查询时间短,且是单线程的,这样就能保证各个线程获得的自增id是对的,在这里我就提供一下思路

        1 生成每天或者每月唯一的redis key (保证前缀唯一) 例如PO-20191012

        2 按照redis key 通过incr生成自增id   这个就类似于Atomic自增了,不过Atomic,每次发版会重置,然后就可以拼接出code了;

        3 过期删除,生成了key时间过了就应该删除,那删除的时间怎么找呢 ,我们可以在自增为1的时候删除上一周期的键这样比较稳

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务