increment()函数

如题所述

第1个回答  2022-07-06

本文使用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文档链接

相似回答