application.properties中配置redis,我本地redis没有设置密码,所以注释了密码这一行
创建SequenceService类用于生成特定业务编号
接下来,启动项目,使用接口的形式访问,或者写Test方法执行,就可以得到诸如ORDER2020071600000001、ORDER2020071600000002的编号,而且在高并发环境中也不会出现数据重复的情况。实现原理:上面生成特定业务编号主要分为三部分,如下图
前缀和日期部分,没什么需要解释的,主要是redis中的生成的序列号,而这需要依靠RedisAtomicLong来实现,先看下上面生成redis序列过程中发生了什么
获取redis中对应业务的key,生成过期时间expireTime 获取了RedisTemplate对象,通过该对象获取RedisConnectionFactory对象 将key,RedisConnectionFactory对象作为构造参数生成RedisAtomicLong对象,并设置过期时间 调用RedisAtomicLong的incrementAndGet()方法看下RedisAtomicLong源码,当然只放一部分源码,不会放全部,RedisAtomicLong的结构,主要构造函数,和上面提到过的incrementAndGet()方法
其实主要还是通过redis的自增序列来实现
到此这篇关于如何使用redis生成唯一编号及原理的文章就介绍到这了,更多相关redis生成唯一编号内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!