Redis-RedisTemplate的RedisSerializer

目录

问题描述

自定义RedisTemplate的序列化方式

测试时碰到的问题


问题描述

自定义RedisTemplate的序列化方式

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
        //创建Template
        RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>();
        //设置连接工厂
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置序列化工具
        GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
        //key和hashKey采用String序列化
        redisTemplate.setKeySerializer(RedisSerializer.string());
        redisTemplate.setHashKeySerializer(RedisSerializer.string());
        //value和hashValue采用Json序列化
        redisTemplate.setValueSerializer(jsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jsonRedisSerializer);
        return redisTemplate;
    }
}

运行测试代码

@SpringBootTest
public class RedisTemplateTest {
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;
    @Test
    void testString(){
        //插入一条String类型数据
        redisTemplate.opsForValue().set("name","张三");
        //读取一条String类型数据
        Object name = redisTemplate.opsForValue().get("name");
        System.out.println("name="+name);
    }
}

测试时碰到的问题

测试时,存入的值为张三

并且显示运行成功

使用redis图形化工具查看name的值时,能正常显示"张三"

但是在虚拟机中使用命令行获取name的值时,却是字节的形式

这是因为当前使用的redis-cli没有支持中文,所以显示不了中文。

解决方法是:在使用redis-cli命令行客户端时,指定--raw,这样就能显示中文了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值