我遇到了一个有趣的(不是说非常烦人的)问题。我对 Redis 还很陌生,但我知道如何操作基础知识。
基本上我有一个有 3 个主服务器的集群,每个主服务器有 2 个从服务器,每个服务器跨三台服务器。
我有一堆普通的密钥,我尝试根据所有服务器上的模式清理所有密钥,所以我在主节点上运行了这样的东西:
for server in "${servers[@]}" do
./redis-cli -h ${server} -p ${master_port} KEYS 'pattern:*' | xargs -I {} ./redis-cli -h ${server} -p ${master_port} DEL {}
done
现在这很好用,看起来所有的键都被删除了,但是,当我KEYS 'pattern:*'
在每台服务器上再次运行该命令时,属于的键master 1
出现在master 2
. 如果我尝试访问密钥,get <key>
我会正确收到moved
通知,并且如果我使用-c
以下参数执行相同操作,我会正确重定向并收到nil
回复。
我已经尝试过使用 lua 和 ruby 脚本来做同样的事情,scan
但是两者都在最初没有键的节点上输出应该删除的键。
有什么方法可以永久删除这些密钥,这样我就可以获得可靠的计数/证据证明它们已经消失了?