本文使用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文檔鏈接