在Redis中进行sum/count/groupby的最佳方法是什么?

fan*_*lix 7 redis

对于Redis列表(或set/zset/hset)

['5', '5', '5', '5', '4', '3', '3', '3', '2', '2', '2', '2', '1', '1', '1']
Run Code Online (Sandbox Code Playgroud)

像sql那样,统计它的最佳方法是什么

select count(key), sum(key) from table group by key; 
Run Code Online (Sandbox Code Playgroud)

希望客户端循环不是唯一的方法.......

Sri*_*nan 19

最好的方法是将sum存储为单独的键,并在每次添加/删除set/hash/zset中的值时进行更新.

在Redis中,您应该尝试根据访问模式对数据建模.如果在运行时需要总和,则预先计算并存储总和.如果您需要按小时/每日/每月汇总,则必须创建相应的命名密钥.

  • 在这种情况下,在服务器(redis)端执行此操作的唯一方法是使用2.6候选版本并使用[lua脚本](http://redis.io/commands/eval). (3认同)
  • 预计算是一个好主意.但是对于旧系统已经有很多数据,或者对于新需求,我们无法预先计算. (2认同)