我有一个具有以下配置的 redis 集群:
91d426e9a569b1c1ad84d75580607e3f99658d30 127.0.0.1:7002@17002 myself,master - 0 1596197488000 1 connected 0-5460
9ff311ae9f413b48578ff0519e97fef2ced57b1e 127.0.0.1:7003@17003 master - 0 1596197490000 2 connected 5461-10922
4de4d36b968bd0b5b5dc8023cb00a5a2ab62effc 127.0.0.1:7004@17004 master - 0 1596197492253 3 connected 10923-16383
a32088043c31c5d3f20828bfe06306b9f0717635 127.0.0.1:7005@17005 slave 91d426e9a569b1c1ad84d75580607e3f99658d30 0 1596197490251 1 connected
b5e9ec7851dfd8dc5ab0cf35c230a0e716dd934c 127.0.0.1:7006@17006 slave 9ff311ae9f413b48578ff0519e97fef2ced57b1e 0 1596197489000 2 connected
a34cc74321e1c75e4cf203248bc0883833c928c7 127.0.0.1:7007@17007 slave 4de4d36b968bd0b5b5dc8023cb00a5a2ab62effc 0 1596197492000 3 connected
我想通过使用 redis 齿轮侦听键操作来创建一个包含集群中所有键的集合,并将键名称存储在名为keys
.
为了做到这一点,我运行了这个 redis gears 命令
RG.PYEXECUTE "GearsBuilder('KeysReader').foreach(lambda x: execute('sadd', 'keys', x['key'])).register(readValue=False)"
它有效,但前提是更新的密钥存储在密钥的同一节点上keys
例子 :
使用我的集群配置,关键keys
是存储 un 节点91d426e9a569b1c1ad84d75580607e3f99658d30
(第一个节点)。
如果我运行:
SET foo bar
SET bar foo
SMEMBERS keys
我有以下结果:
127.0.0.1:7002> SET foo bar
-> Redirected to slot [12182] located at 127.0.0.1:7004
OK
127.0.0.1:7004> SET bar foo
-> Redirected to slot [5061] located at 127.0.0.1:7002
OK
127.0.0.1:7002> SMEMBERS keys
1) "bar"
2) "keys"
127.0.0.1:7002>
第一个键名foo
不保存在集合中keys
。
keys
是否可以使用 redis gears在集合中保存其他节点上的键名?
Redis 版本:6.0.6
Redis 齿轮版本:1.0.1
谢谢。