当前位置: 首页 > 面试题库 >

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

邓阳伯
2023-03-14
问题内容

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

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


问题答案:

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

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

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

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

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

注意

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

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



 类似资料:
  • 问题内容: 在我的Redis DB中,我有很多哈希值。 有时我想从原子上清除它们。我如何在不使用某些分布式锁定机制的情况下做到这一点? 问题答案: 从redis 2.6.0开始,您可以运行自动执行的lua脚本。我从来没有写过,但是我认为它看起来像这样 警告 :如Redis文档所述,由于性能问题,该 命令不应用于生产中的常规操作,该命令旨在用于调试和特殊操作。阅读更多 请参阅EVAL文档。

  • 我读了很多帖子提到删除匹配模式的键。我想删除与特定模式不匹配的键。

  • 在Redis-Py中,我如何计算与模式匹配的键数?我发现了一些方法scan、scan_iter,但它们使用键名的模式进行搜索。 我需要的示例:

  • 我是Docker Swarm的新手。我试图用compose文件在Docker swarm上部署redis集群。我希望redis集群使用端口6380,所以我配置了端口,并让它在compose文件中挂载redis配置文件。 但是当我运行时,我得到了一个错误的声明,“对不起,集群配置文件redis-node.conf已经被不同的Redis集群节点使用了。请确保不同的节点使用不同的集群配置文件。” 这是我

  • Redis streams是否受益于群集模式?假设您有10个流,它们是分布在集群中还是全部分布在同一个节点上?我计划使用Redis streams实现真正的高吞吐量(每秒200万条消息),因此我担心Redis streams在这种规模下的性能。 如果Redis streams不能在集群模式下进行开箱即用的扩展,那么任何关于水平扩展Redis streams的指导都会非常棒。

  • 问题内容: 我已经使用Python和Django建立了一个在线画廊。我刚刚开始添加编辑功能,从旋转开始。我使用sorl.thumbnail按需自动生成缩略图。 当我编辑原始文件时,我需要清理所有缩略图,以便生成新的缩略图。每个图片有三到四个(我在不同场合有不同的图片)。 我 可以 在文件变量中进行硬编码…但是这很混乱,如果我改变工作方式,则需要重新访问代码。 理想情况下,我想进行正则删除。用正则表