Redis:计算Redis集群上特定的密钥类别?

问题描述 投票:1回答:1

是否有一种有效的方法来计算Redis集群上特定的密钥类?

这里,“特定类别的密钥”表示用于共同目的的密钥;例如,会话密钥。它们可以具有公共密钥名称前缀。可以有多个班级。从现在开始,我将把键类简称为键。

我想做的是如下:

  • 必须使用Redis群集。
  • 必须将密钥分发到Redis群集的节点。
  • 必须有一种有效的方法来计算Redis群集的所有节点上的密钥数。
  • 密钥可以有TTL - 也就是说,可以过期。
  • 可以在运行时更改Redis群集的节点数,并可以重新分配散列槽。
  • 客户端使用Node.js实现。

我已经阅读了文档,但找不到合适的解决方案。

提前致谢。

redis redis-cluster
1个回答
1
投票

不,基本上。 “经典”(非集群)也不存在。要在没有额外存储机制的情况下执行此操作,您需要重复使用SCAN来迭代整个键空间。幸运的是,它至少接受了一个过滤器(因此您不需要获取每个密钥),但效率很低 - 您通常只会定期执行此操作作为审阅功能,而不是操作功能。我们实际上在“opserver”的redis插件中包含了这样一个功能。

切换到群集时,您需要重复此操作,但需要在每组复制垂直中重复一次。您通常会通过CLUSTER命令获取该列表,因此节点的动态特性没有实际意义。

在经典和集群中,建议仅在副本上执行此操作 - 而不是主副本。而且:仅作为管理工具,而不是作为系统的常规部分。

不要使用KEYS来做到这一点。更喜欢SCAN

© www.soinside.com 2019 - 2024. All rights reserved.