【发布时间】:2020-05-10 22:58:36
【问题描述】:
关于 Redis 服务器的性能,有没有办法计算 24 小时内保存的分数的总和? (每天新增约 100 万行)
使用排序集存储用户的时间戳和分数的正确格式是什么?
其实我用的是这个命令:
ZADD allscores 1570658561 20
作为分数,它是以秒为单位的实际时间......其他字段是真实分数。
但是,这里有一个问题!当另一个用户获得相同的分数 (20) 时,它不会被添加,因为它已经存在 - 这个问题的任何解决方案?
我正在考虑使用 LUA 脚本,但有两个令人头疼的问题:
LUA 脚本将阻止其他命令工作,直到它完成工作(这对我来说不是一个好习惯,因为脚本必须 24/24 7/7 工作,同时许多用户必须获取数据同时来自 Redis 缓存服务器,如用户分数、历史信息等。) - 另外,LUA 脚本每次都必须处理每天保存在特定键中的许多记录 - 所以,当 Lua 脚本工作时,用户无法获取数据...知道 Lua 脚本将一直循环运行。
其次,它与第一个问题有关,如果我在命令中使用时间戳作为分数,则不允许我存储相同的分数,这样我就可以返回 24 小时数据。
如果你是我的情况,你将如何处理?谢谢
【问题讨论】:
标签: redis redis-cluster