Redis:计算 Redis 集群上特定 class 个键?
Redis: count specific class of keys on a Redis cluster?
是否有一种有效的方法来计算 Redis 集群上特定 class 个键?
这里,'specific class of keys'表示用于共同目的的键;例如,会话密钥。它们可以有一个共同的键名前缀。可以有多个 classes。从现在开始,我将把键的 class 简称为键。
我想做的事情如下:
- 必须使用Redis集群。
- 密钥必须分发到Redis集群的节点。
- 必须有一种有效的方法来计算 Redis 集群所有节点上键的数量。
- 密钥可以有 TTL - 即可以过期。
- Redis集群的节点数可以在运行时改变,哈希槽可以重新分配。
- 客户端使用 Node.js 实现。
我已阅读文档,但找不到合适的解决方案。
提前致谢。
基本上没有。 "classic"(非集群)也不存在。要在没有额外存储机制的情况下做到这一点,您需要重复使用 SCAN
来遍历整个键空间。幸运的是,它至少接受一个过滤器(因此您不需要获取每个键),但效率很低——您通常只会定期执行此操作作为审查功能,而不是操作功能。我们实际上在 "opserver" 的 redis 插件中包含了这样一个功能。
当您切换到集群时,您需要重复此操作,但要在每组垂直复制中的一个上重复。您通常会通过 CLUSTER
命令获得该列表,因此节点的动态特性没有实际意义。
在经典和集群中,建议只在副本上执行此操作,而不是在主服务器上执行此操作。再说一次:仅作为管理工具,而不是系统的常规部分。
请勿使用 KEYS
执行此操作。更喜欢 SCAN
.
是否有一种有效的方法来计算 Redis 集群上特定 class 个键?
这里,'specific class of keys'表示用于共同目的的键;例如,会话密钥。它们可以有一个共同的键名前缀。可以有多个 classes。从现在开始,我将把键的 class 简称为键。
我想做的事情如下:
- 必须使用Redis集群。
- 密钥必须分发到Redis集群的节点。
- 必须有一种有效的方法来计算 Redis 集群所有节点上键的数量。
- 密钥可以有 TTL - 即可以过期。
- Redis集群的节点数可以在运行时改变,哈希槽可以重新分配。
- 客户端使用 Node.js 实现。
我已阅读文档,但找不到合适的解决方案。
提前致谢。
基本上没有。 "classic"(非集群)也不存在。要在没有额外存储机制的情况下做到这一点,您需要重复使用 SCAN
来遍历整个键空间。幸运的是,它至少接受一个过滤器(因此您不需要获取每个键),但效率很低——您通常只会定期执行此操作作为审查功能,而不是操作功能。我们实际上在 "opserver" 的 redis 插件中包含了这样一个功能。
当您切换到集群时,您需要重复此操作,但要在每组垂直复制中的一个上重复。您通常会通过 CLUSTER
命令获得该列表,因此节点的动态特性没有实际意义。
在经典和集群中,建议只在副本上执行此操作,而不是在主服务器上执行此操作。再说一次:仅作为管理工具,而不是系统的常规部分。
请勿使用 KEYS
执行此操作。更喜欢 SCAN
.