【Redis】关于redisTemplate.opsForValue().set数据本地redis客户端库中查不到问题的解决记录,或者查到的key或者value是乱码

背景:
使用redisTemplate进行写值、读值测试,发现写、读均正常。然后在本地redis库中,通过key值读取maven工程中刚才通过redisTemplate存储的数值时,发现获取不到,于是我实验了一番

步骤 操作
步骤1 创建RedisTemplate对象
步骤2 使用opsForValue().set方法存储数据
步骤3 使用opsForValue().get方法查询数据

console中取值没问题
在这里插入图片描述

然后我到本地redis命令行中去取值:
在这里插入图片描述
由于我只是放了一个key:value, 所以我直接用keys * 来查了一下是不是存在这个key,结果如下:(出现了一堆不知道是啥的东西)
在这里插入图片描述
据我了解,这是实际向redis存储的时候转化成了16 进制数组了,所以是这样的展示

经过一番研究。直接上解决办法:

代码中添加代码:

//序列化key
        redisTemplate.setKeySerializer(new StringRedisSerializer());

console结果如下:能正常读取
在这里插入图片描述
本地redis中尝试读取
在这里插入图片描述

在这里插入图片描述
上面未读到值是因为,不是没有存储进去,其实已经存储了,只是存储的key不是name3,而是 1) “\xac\xed\x00\x05t\x00\x05name3” 16 进制串,所以通过get name3 未拿到数据,由于我制定了向redis中存储的时候了,key的序列化的方式了,所以这个里面的key 直接就以name3 的形式存储到了redis中,所以此时通过 get name3 能读取到了数据;但是随之另外一个问题出现了,key序列化之后,通过key:name3 能读取到数据了,而且读取到的数据在console中显示正常
在这里插入图片描述
但是在redis中查询显示还是16 进制内容:
在这里插入图片描述
所以此时也对存储到redis的value也进行序列化:

     //序列化value
        redisTemplate.setValueSerializer(new StringRedisSerializer());

console读取正常:
在这里插入图片描述
此时redis中value读取出来也正常了。
在这里插入图片描述
至此,我们的问题都解决啦~
补充:常见的序列化方式,可以见另外一篇博客 :待补充~

路漫漫其修远兮,吾必将上下求索~
到此关于Redis为何查不出来就算告一段落了,如果你认为博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧转载请注明出处哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执键行天涯

码你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值