本文使用spring封装的spring-data-redis进行操作,在对某key进行increment()方法实现计数器,此计数器可以用在分布式当中,不会局限于某一jvm。
increment()方法是实现递增,对于同一个KEY,执行一次,如果key存在,则把value的值增加delta,
注意:
Spring对Redis序列化的策略有两种,分别是StringRedisTemplate和RedisTemplate,其中StringRedisTemplate用于操作字符串,RedisTemplate使用的是JDK默认的二进制序列化。
大家都知道redis序列化是将key,value值先转换为流的形式,再存储到redis中。
RedisTemplate是使用的JdkSerializationRedisSerializer序列化,序列化后的值包含了对象信息,版本号,类信息等,是一串字符串,所以无法进行数值自增操作。
而StringRedisTemplate序列化策略是字符串的值直接转为字节数组,所以存储到redis中是数值,所以可以进行自增操作。
下列方法是实现每个月重置计数器,是每个月计数器从零开始计数:
如果需要根据时间递增,我们的key可以设为和时间相关的字符串,具体的时间转化我是用的是hutool工具,比较方便。
hutool文档链接