【Redis】通过 .keys() 方法查询不到 hashkey?

在做 redis 的迁移工作的时候,已经将 redis 缓存数据导入进去,string 类型的数据结构显示正常,而 hash 类型的数据结构则查询出来的 value 值是 null:

于是去排查代码:

这里明显 hashKeys 这个 key 值得怀疑,通过排查得知,hashOperations.keys(key) 是一个查询 redis key 值的方法,例如 hashOperations.keys("app") 就能查询出来 key 值中以 app_ 开头的所有 key,所以这肯定不对。

需求:如果 value 值的数据结构是 hash 类型的话,通过 redis 的 key 值查询出所有的 hashkey。

所以应该调用的方法是:hashOperations.hkeys(key)

于是我在想为什么之前的同事写出来这种代码程序还能正常运行呢?于是我去跟踪程序:

原因是在 nacos.properties 文件中有关于 redis 的配置项:

在本地发开环境中用的都是 DEV_GROUP,但由于我本次要进行 redis 的数据迁移,需要把服务器 A 的数据迁移到服务器 B,所以需要切换配置 YAO_GROUP:

由于切换了 redis 的配置指向,代码调用 redis 的方式也发生了改变,在项目中,RedisCache 暴露出来的接口是统一的,但实际上它被两个类实现,而这两个类又分别调用的是 RedisTemplate 和 Jedis 的接口,在 RedisTemplate 中获取所有的 hashkey 的写法是 hashOperations.keys(key) 这样没错,这也就解释了之前的代码为什么在生产中可以正常使用,因为之前没有走 redis.grout=YAO_GROUP 的需求。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值