如何在Redis群集中删除与模式匹配的键

孙兴斌*_*孙兴斌 1 redis redis-cluster

我已经在这个问题中尝试过方法,但是由于我在集群模式下工作,因此它不起作用,redis告诉我:

(错误)CROSSSLOT请求中的键未哈希到同一插槽

for*_*ack 5

问题的答案尝试在一个中删除多个键DEL。但是,与给定模式匹配的键可能不会位于同一插槽中,并且如果这些键不属于同一插槽,则Redis Cluster不支持多键命令。这就是为什么您收到错误消息的原因。

为了解决此问题,您需要DEL一对一地使用以下密钥:

redis-cli --scan --pattern "foo*" |xargs -L 1 redis-cli del
Run Code Online (Sandbox Code Playgroud)

-L用于选项xargs命令指定键删除的数目。您需要将此选项指定为1

为了删除所有与模式匹配的键,您还需要对集群中的每个主节点运行上述命令。

注意

  1. 使用此命令,您必须一个一个地删除这些密钥,这可能会很慢。您需要考虑重新设计数据库,并使用哈希标记使与模式匹配的键属于同一插槽。这样您就可以一次删除这些键DEL

  2. 任一SCANKEYS命令是低效的,特别是,KEYS不应该在生产中使用。您需要考虑为这些键建立索引。