RedisTemplate increment 錯誤:ERR value is not an integer or out of range解決


RedisTemplate increment 錯誤:ERR value is not an integer or out of range解決

原因:GenericJackson2JsonRedisSerializer、Jackson2JsonRedisSerializer是先將對象轉為json,然后再保存到redis,所以,1在redis中是字符串1,所以無法進行加1 JdkSerializationRedisSerializer使用的jdk對象序列化,序列化后的值有類信息、版本號等,所以是一個包含很多字母的字符串,所以根本無法加1,這個序列化器跟memcache的序列化規則很像memcache怎樣存儲的對象 GenericToStringSerializer、StringRedisSerializer將字符串的值直接轉為字節數組,所以保存到redis中是數字,所以可以進行加1 ;
通過以下代碼配置redistemplate的序列化方式之后就可以順利的執行increment了;

/** * 設置 redisTemplate 的序列化設置 * @param redisConnectionFactory * @return
 */ @Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { // 1.創建 redisTemplate 模版
    RedisTemplate<Object, Object> template = new RedisTemplate<>(); // 2.關聯 redisConnectionFactory
 template.setConnectionFactory(redisConnectionFactory); // 3.創建 序列化類
    GenericToStringSerializer genericToStringSerializer = new GenericToStringSerializer(Object.class); // 6.序列化類,對象映射設置 // 7.設置 value 的轉化格式和 key 的轉化格式
 template.setValueSerializer(genericToStringSerializer); template.setKeySerializer(new StringRedisSerializer()); template.afterPropertiesSet(); return template; }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM