ruby - 计算 redis 键而不在 Ruby 中获取它们

标签 ruby count redis

我在 Redis 中保存了一个在线用户列表,一个键对应一个用户。 key 设置为在 15 分钟后超时,因此我要做的就是查看过去 15 分钟内有多少用户大致处于事件状态,我可以这样做:

redisCli.keys('user:*').count

问题是随着 key 数量的增加,在计算所有 key 之前获取所有 key 所需的时间显着增加。有没有一种方法可以在不必先获取所有 key 的情况下对 key 进行计数?

最佳答案

有一种方法可以直接索引 Set 或 Sorted Set 中的键,即使用新的 SCAN command .这取决于用例、内存/速度权衡以及所需的计数精度。

另一种选择是使用 Redis HyperLogLogs,请参阅 PFADDPFCOUNT .

关于ruby - 计算 redis 键而不在 Ruby 中获取它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23719158/

相关文章:

mysql - Rails 中的产品、类别和品牌数据库关系

mysql - 将列值/字段/行从一个表复制到另一个表

redis - 你如何处理失败的 redis 连接

ruby - Why 的(令人心酸的)Ruby 指南中使用什么版本的 Ruby

ruby-on-rails - 按 time desc 和 total_votes 呈现帖子

ruby-on-rails - 在模块内创建全局 Rails 方法?

jquery计算一行中复选框的数量

sql-server - 使用 count 函数或在 sql 中创建特定列进行计数

azure - 自动更新缓存

c - 集合中的 redis 值对