【问题标题】:Redis: count specific class of keys on a Redis cluster?Redis:计算 Redis 集群上特定类别的键?
【发布时间】:2017-12-21 21:18:01
【问题描述】:

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

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

我想做的如下:

  • 必须使用 Redis 集群。
  • 密钥必须分发到 Redis 集群的节点。
  • 必须有一种有效的方法来计算 Redis 集群所有节点上的键数。
  • 密钥可以有 TTL - 即可以过期。
  • Redis 集群的节点数可以在运行时改变,哈希槽可以重新分配。
  • 客户端使用 Node.js 实现。

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

提前致谢。

【问题讨论】:

    标签: redis redis-cluster


    【解决方案1】:

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

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

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

    不要使用KEYS 来执行此操作。首选SCAN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-01
      • 2011-01-09
      • 1970-01-01
      • 2020-06-12
      • 2019-12-01
      • 2017-06-20
      • 1970-01-01
      • 2021-12-22
      相关资源
      最近更新 更多