一次Redis存储key序列化的异常原因分析

公司的项目采用了redis作为缓存使用,以前没有太关注序列化的时候,key和value的都是采用默认的序列化方式,后来有一次为了方便线上查找问题方便定位到具体缓存内容,才发现使用的默认序列化方式,只能通过命令获取,而且还获取不到,因为key被字节话了,所以统一修改的key的序列化方式为字符串,通过@PostConstruct注解,设置了序列化方式,当时测试都没有问题了。配置方法如下:

    @PostConstruct
    public void setRedisConfig() {
        RedisSerializer stringSerializer = new StringRedisSerializer();
        redisTemplate.setKeySerializer(stringSerializer);
        redisTemplate.setHashKeySerializer(stringSerializer);
    }

经过一段时间,有一次开发过程中通过可视化客户端工具查看开发环境的redis库的时候,发现又出现了字节话序列的key了,但是部分是好的,部分是坏的,很奇怪。通过多次排查发现了问题所在,原来因为业务需求,需要在项目启动的时候,默认从数据库读取一些系统常用配置到缓存,所以也通过@PostConstruct注解来进行,但是大家都是通过注解来进行的,而且这个注解没有参数来控制它的优先级,所以一部分的key在配置生效前就进了缓存,这时的key就是乱码了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值