redistemplate使用_使用redis特性创建每日流水号

v2-9fe942854d54eacaf5a25288c6086503_1440w.jpg?source=172ae18b

关注我,精彩文章第一时间推送给你

v2-506dbf815f7bb48ff684df6edcdd9b29_b.jpg
这里需求是创建每日的流水号,例如:每向数据库中添加一条数据,其编号设置为yyyyMMdd0001、yyyyMMdd0002这样的格式,日期加后四位为当日流水号,也就是当日第几个添加的数据。
  • 为什么考虑使用redis呢?

额、redis的特性就不介绍了,反正本文也不是介绍redis怎么使用的...

简而言之,为了显示自己用过redis而用,哈哈哈

  • 这里docker启动redis遇到一个问题,记录一下
#创建容器的时候报错WARNING: IPv4 forwarding is disabled. Networking will not work.
  • 创建一个spring boot项目,在pom.xml中引入如下依赖
<dependency>
    
  • 配置application.yml连接redis
spring:
  redis:
    host: 192.168.16.128
    port: 6379
    # 连接超时时间(记得添加单位,Duration)
    timeout: 10000ms
    # Redis默认情况下有16个分片,这里配置具体使用的分片
    # database: 0
    lettuce:
      pool:
        # 连接池最大连接数(使用负值表示没有限制) 默认 8
        max-active: 8
        # 连接池最大阻塞等待时间(使用负值表示没有限制) 默认 -1
        max-wait: -1ms
        # 连接池中的最大空闲连接 默认 8
        max-idle: 8
        # 连接池中的最小空闲连接 默认 0
        min-idle: 0
  • 创建redis操作类,这里主要利用的redis自增操作
@Component
  • 把获取到的redis自增的序号格式化成指定格式0001/0002/...
public 
  • 测试获取到的yyyyMMdd0001格式的每日流水号
@SpringBootTest
解释一下:用redis:serialNumber:20200409这个作为redis的key去查找自增值,每次执行加1
redis中的key-value将是这样:
key value
redis:serialNumber:20200409 0001
redis:serialNumber:20200409 0002
...
直到下一天key变成了redis:serialNumber:20200410,value则会从0001开始递增
又因为我设置了redis的过期时间是86400秒 = 1天,所以过期的数据会自动删除
  • 看一下控制台的log日志

v2-0e3b898e177f8d7863f3720ec0f184c0_b.png
  • 在执行一次

v2-513c06327a92c364a52e0329518ddeb5_b.png