似乎,这是常见的任务,但我还没有找到解决方案。
我需要计算过去 24 小时内用户事件的数量(例如,他留下了多少评论)。较旧的数据对我来说并不有趣,因此应该从 Redis 中删除有关一个月前添加的评论的信息。
现在我只看到一种解决方案。我们可以制作包含用户 ID 和一天中的小时的键,增加它的值。然后我们将得到 24 个值并计算它们的总和。每个密钥都有 24 小时的有效期。
例如,
这种方法不准确(它计算每 24+0..1 小时的事件数)并且不太通用(如果我需要每过去 768 分钟或 2.5 个月的事件数,我会选择什么键?)。
你有更好的 Redis 数据类型解决方案吗?
你的模型看起来不错。当然,这并不通用,但为了提高性能,您必须牺牲一些东西。
我建议你继续这样做。如果您需要另一个时间跨度来进行报告(768 分钟),您始终可以从存储您的评论的 mysql 中获取此时间(您会这样做,对吧?)。这会比较慢,但至少可以提供查询服务。
如果您需要更快的响应或更高精度,您可以将计数器存储在redis中,分辨率为分钟(每分钟一个计数器)。
| 归档时间: |
|
| 查看次数: |
2353 次 |
| 最近记录: |