spring data redis 序列化導致string多出一些奇怪的字符

在這裏插入圖片描述
問題出現的過程如下:

  1. 首先使用redis-cli執行set aaa bbb
  2. 然後使用spring data redis 默認的序列化器(就是不額外配置,會默認使用JdkSerializationRedisSerializer)
  3. 使用RedisTemplate執行執行get查詢aaa,會返回null,但是回到redis-cli發現aaa還在
  4. 使用RT去創建一個 key=aaa v=qqq的kv,然後到redis-cli去查看,發現並沒有覆蓋掉原來的aaa,反而增加了一個\xac\xed\x00\x05t\x00\x03aaa,通過還原發現前面這一串不知名的utf-8是¬ít,這個大概是默認序列化器加上去的。其實值也有同樣的問題。
  5. 使用GenericToStringSerializer可以解決這個問題,代碼如下
@Bean("redis")
 public RedisTemplate<String, String> s() {
     RedisTemplate<String, String> redis = new RedisTemplate<>();
     redis.setConnectionFactory(redisConnectionFactory());
     //這裏設置序列化器
     redis.setValueSerializer(new GenericToStringSerializer<String>(String.class));
     redis.setKeySerializer(new GenericToStringSerializer<String>(String.class));
     return redis;
 }
  • 蒐羅的一些常用的序列化器
    1. StringRedisSerializer
    2. Jackson2JsonRedisSerializer
    3. GenericToStringSerializer
    4. OxmSerializer
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章