我使用的是Redis集群版本redis-5.0.5。我想查看我的Redis集群中存在的所有密钥。我知道对于单机版,我们使用KEYS *来获取所有密钥。什么是查看Redis集群中所有密钥的方法?
redis-5.0.5
KEYS *
$ redis-cli -h hostname -p 90001 -c hostname:90001> KEYS * (empty list or set) // I have data on my cluster
zour9fqk1#
基本上,您需要在每个节点上运行KEYS *(请不要在生产环境中运行!)。cli可以使用'--cluster call'命令来完成此操作,如下所示:
redis-cli --cluster call hostname:90001 KEYS "*"
bjp0bcyl2#
要求:1.雷迪斯克利1.鹰1.格雷普1.萨尔格斯假设Redis服务器位于localhost,默认端口为6379,则可以尝试此操作:
localhost
6379
redis-cli cluster nodes | awk '{print $2" "$3}' | grep master | awk -F @ '{print $1}' | awk -F : '{print " -h "$1" -p "$2" --scan"}' | xargs -L 1 redis-cli -c
较长的版本基础问题(90001端口号严重吗?),你也可以改变模式(*无过滤器)过滤某些关键模式:
90001
*
redis-cli -h hostname -p 90001 cluster nodes | awk '{print $2" "$3}' | grep master | awk -F @ '{print $1}' | awk -F : '{print " -h "$1" -p "$2" --scan --pattern *"}' | xargs -L 1 redis-cli -c
它连接到任何一个redis节点以获取集群信息,然后在每个主节点上执行密钥扫描命令。
relj7zay3#
SCAN命令可能就是你要找的,但是它是O(N),所以你拥有的键越多,运行速度就越慢。另外,看看Marc Gravell的回答,了解另一种使用集合的方法:在StackExchange.Redis中通过键模式获取值
SCAN
lp0sw83n4#
您可以使用以下命令扫描Redis集群中所有节点的密钥:
redis-cli -h localhost CLUSTER NODES \ | grep master \ | awk '{print $2}' \ | cut -f1 -d '@' \ | xargs -I '{}' redis-cli -u redis://{} --scan --pattern '*'
**TL;DR:**获取集群中所有节点的所有IP和端口,并扫描每个节点上的键。
redis-cli -h localhost CLUSTER NODES
grep master
awk '{print $2}'
cut -f1 -d '@'
xargs
redis-cli
-u
-p
4条答案
按热度按时间zour9fqk1#
基本上,您需要在每个节点上运行
KEYS *
(请不要在生产环境中运行!)。cli可以使用'--cluster call'命令来完成此操作,如下所示:bjp0bcyl2#
要求:
1.雷迪斯克利
1.鹰
1.格雷普
1.萨尔格斯
假设Redis服务器位于
localhost
,默认端口为6379
,则可以尝试此操作:较长的版本基础问题(
90001
端口号严重吗?),你也可以改变模式(*
无过滤器)过滤某些关键模式:它连接到任何一个redis节点以获取集群信息,然后在每个主节点上执行密钥扫描命令。
relj7zay3#
SCAN
命令可能就是你要找的,但是它是O(N),所以你拥有的键越多,运行速度就越慢。另外,看看Marc Gravell的回答,了解另一种使用集合的方法:在StackExchange.Redis中通过键模式获取值lp0sw83n4#
您可以使用以下命令扫描Redis集群中所有节点的密钥:
**TL;DR:**获取集群中所有节点的所有IP和端口,并扫描每个节点上的键。
redis-cli -h localhost CLUSTER NODES
从群集配置中获取所有信息,包括要连接以运行命令的节点地址grep master
仅选择主节点awk '{print $2}'
选择包含IP、端口和群集总线端口的第二列cut -f1 -d '@'
以截断群集总线端口xargs
与redis-cli
结合使用以运行所需的命令。-u
标志可以在一个字符串中提供服务器地址和端口类似地,您还可以在每个群集节点上执行特定于节点的命令,请参见here。
另外,在上面的命令中,确保用实际的主机地址替换
localhost
,如果需要,提供一个带有-p
的端口。请记住,虽然扫描密钥的成本低于KEYS *
,但它仍然会影响性能。