小编典典

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

redis

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

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


阅读 312

收藏
2020-06-20

共1个答案

小编典典

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

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

redis-cli --scan --pattern "foo*" |xargs -L 1 redis-cli del

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

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

注意

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

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

2020-06-20