现在的场景是这样的
原表 500w 左右的数据量 现在每 20 分钟会有 2-3w 的增量数据
需求: 根据数据表中的一列(cid) 统计 同一种 cid 出现次数最多的前 20 名
我自己的想法是 后台写一个脚本 定时读取这个表 读入 redis 利用 ZINCRBY 做计数器
key 是这样的: user_top:xxx(对应的 cid) 每读一行 相应的 key 加一 最后统计只需要 zrangebyscore
然后在另一张日志表记录本次读到的 id 下次从这个地方接着读
那么如果 redis 突然挂了或者发生其他原因导致服务不可用 那么即使做了 aof 也无法保证数据能百分百恢复 这样的情况下 该如何解决 , 或者还有别的什么解决方法来进行统计呢?