欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Redis 不使用 keys 命令获取键值信息的方法

程序员文章站 2022-05-17 10:45:32
1. 问题来源 这个问题可能看起来很奇怪,但很多 redis 集群会有一个统一的入口,入口会作兼容 redis 命令的代理,一般出于新能考虑是禁止使用 keys 命令来获...

1. 问题来源

这个问题可能看起来很奇怪,但很多 redis 集群会有一个统一的入口,入口会作兼容 redis 命令的代理,一般出于新能考虑是禁止使用 keys 命令来获取键值信息的,但是可以通过 scan 命令来代替 keys

2. 使用 keys 的方法

127.0.0.1:6379> keys *
1) "_kombu.binding.test_queue"
2) "a8e620b9-e52e-3498-8a1c-448f35783058"
3) "_kombu.binding.celery"

3. 使用 scan 的方法

127.0.0.1:6379> dbsize
(integer) 3
127.0.0.1:6379> scan 0 match * count 3
1) "5"
2) 1) "a8e620b9-e52e-3498-8a1c-448f35783058"
 2) "_kombu.binding.test_queue"
 3) "_kombu.binding.celery"

简单说明

scan 命令 (以及相关的 sscan/hscan/zscan,分别用于 set/hash/zset) 用于增量式的遍历一个集合中的元素。因为其增量特性 (每次使用只返回一小部分元素),所以在生产环境中可以用来替代 keys 或 smembers 命令 (keys 或 smembers 命令可能会因为返回的元素过多而阻塞 redis)

所以在生产环境中即便 redis 服务支持 keys 命令,也应该用 scan 来代替

参考:

1. https://groups.google.com/forum/#!topic/redis-db/zzei_pjhf_m
2.

总结

以上所述是小编给大家介绍的redis 不使用 keys 命令获取键值信息的相关知识,希望对大家有所帮助