使用Jedis或者RedisTemnplate操作redis,redis客户端无法查询到存入的值

1 使用RedisTemplate或者Jedis存入redis的数据,可以在redis客户端中使用keys * 查看到,确实是存在的;
2 如果使用代码访问redis,能够获取到对应的值;
3 在redis提供的默认客户端中,使用命令查看该值 显示为nil
4 redis的存储机制;(默认 1(1分钟??次修改) 5(5分钟?/次修改) 15(15分钟1次修改)),可以通过查看redis的配置文件观察到;
5 redis客户端中 keys * 查看到的keys 并不是 简简单单的字符串,而是一串类似url编码的字符,这个是使用jedis或者redistemplate 进行序列化过后的键值;而直接在redis客户端中使用命令存储的key是没有序列化的;

综上: 测试
redis中输入命令存储的key 因为没有序列化,所以 使用jedis或者redisTemplate无法访问;
而在jedis或者redisTemplate中存入的key,因为进行了序列化,所以无法在redis客户端中通过命令查看到;
测试: 代码存入一个string key=test value=hello;
redis客户端,查看keys* 有key值 为 /xac/sed/x00/x05t/x00/x05test的键;
获取为nil,使用代码获取为hello;

在redis客户端中使用save 或者bgsave命令;
再次使用代码存入 string key=test1,value=hello;
redis客户端查看,也存在序列化后的键值;
代码查看也能查询到test1= hello;
此处不要使用save或者bgsave命令;配置中的选型也需要默认;
关闭redis服务,并且重新开启;
代码查询test =
hello test1 = null;
redis客户端中,只有test 没有test1;

这个测试的目的是为了验证:
redis的确是存储了test,和test1,但是因为redis的默认持久化机制,test 被持久化存储,而test1没有被持久化存储; 之后,能够查询到test的 值,无法查询到test1的值,排除了缓存的问题(redis服务端已经被重启后,test和test1的不同查询结果)
证明redis确实存储了我们录入的键值,只是因为jedis的序列化规则,导致在redis客户端无法识别该键,查询为nil的结果;

能够判定这些最好的办法就是下载一个redis的客户端,并不是,redis安装目录下的redis-cli,下载一个redis-manager-client 就可以清楚的观察到数据的变化

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值