首页 > 解决方案 > 如何删除与 Redis 集群中的模式匹配的键

问题描述

我在this question中尝试过方法,但由于我在集群模式下工作,它不起作用,redis告诉我:

(错误)CROSSSLOT 请求中的密钥不会散列到同一个插槽

标签: redisredis-cluster

解决方案


该问题的答案尝试删除单个DEL. 但是,匹配给定模式的键可能不在同一个槽中,如果这些键不属于同一个槽,Redis 集群不支持多键命令。这就是您收到错误消息的原因。

为了解决此问题,您需要DEL一一对应这些键:

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

command的-L选项xargs指定要删除的键的数量。您需要将此选项指定为1.

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

笔记

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

  2. 要么 要么SCAN命令KEYS效率低下,尤其是KEYS不应在生产中使用。您需要考虑为这些键建立索引。


推荐阅读