RedisTemplate设置redis的key时出现\xac\xed\x00\x05t\x00\x0f前缀

2022-07-21 11:56:23

1、问题描述

使用redisTemplate设置redis的key-value,程序运行没有问题,但是却在redis客户端查不到设置的key-value。

2、产生原因

出现这种乱码前缀的原因是没有进行序列化,因此导致在传输过程出现乱码问题。

RedisTemplate类中默认是没有设置序列化的。

 因此需要设置一下RedisTemplate的序列化方式

3、解决方法

设置RedisTemplate的序列化方式

常见的序列化方式

 修改后的代码

@Test
    public void testRedis() {
        //使用StringRedisSerializer序列化方式(一般如果key-value都是string的话,使用StringRedisSerializer就可以)
        RedisSerializer stringSerializer = new StringRedisSerializer();
        //key序列化方式
        redisTemplate.setKeySerializer(stringSerializer);
        //String的序列化方式
        redisTemplate.setStringSerializer(stringSerializer);
        //value序列化方式
        redisTemplate.setValueSerializer(stringSerializer);
        //hash key序列化方式
        redisTemplate.setHashKeySerializer(stringSerializer);
        //hash value序列化方式
        redisTemplate.setHashValueSerializer(stringSerializer);
        redisTemplate.opsForValue().set("notify:00123456", "2022-01-01");
    }

 在redis客户端可以查到了

当然也可以把RedisTemplate序列化配置放到configure里面,做一个全局配置。

package xxx

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

/**
 * @ClassName RedisConfig
 * @Version 1.0
 * @Author Wulc
 * @Date 2022-01-11 16:41
 * @Description 修改redis序列化
 */
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisTemplate redisTemplate) {
        RedisSerializer stringSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringSerializer);
        redisTemplate.setStringSerializer(stringSerializer);
        redisTemplate.setValueSerializer(stringSerializer);
        redisTemplate.setHashKeySerializer(stringSerializer);
        redisTemplate.setHashValueSerializer(stringSerializer);
        return redisTemplate;
    }
}

4、参考资料

RedisTemplate操作redis时,key值出现\xac\xed\x00\x05t\x00前缀_u011345756的专栏-CSDN博客_\xac\xed\x00\x05t\x00

SpringBoot项目使用RedisTemplate设置序列化方式 - 只有芸知道 - 博客园

Spring Cloud里修改Redis的序列化方式 - code-G - 博客园

  • 作者:金斗潼关
  • 原文链接:https://blog.csdn.net/weixin_42032770/article/details/122456819
    更新时间:2022-07-21 11:56:23