【发布时间】:2021-03-24 09:57:47
【问题描述】:
我们的想法是使用INC/HINCRBY 将视频观看次数计数器从直接插入数据库移动到 Redis,并且每 x 秒获取一批并一次性插入数据库。在我看来,有两种选择:
- 为每个ID和
INC设置密钥 - 使用哈希和
HINCRBY
在我看来,这两种方法都有一个缺点——没有POP/ atomic 命令来获取和重置视图计数器。这让我看到了GET + DEL 乘以批量大小的排序事务 - 管道或 LUA..
这些是我唯一的选择吗?有更好的选择吗?最佳做法是什么?
顺便说一句,也许这是针对不同的主题,但我需要相同的日期逻辑而不是计数器(最后一次活动..),所以最好对两者都有一个逻辑。
【问题讨论】:
-
为什么需要在数据库中插入redis计数器?为什么需要重置?如果您不需要保存到数据库中,您可以在第一次递增时使用
expire。 -
我正在尝试减少来自数据库的压力 - 所以每次有人查看页面/视频时,数据库中都会发生插入/更新 - 它会在 redis 中发生,然后在推送中发生它到分贝。我确实需要这些数据。它只是不必立即在数据库中。
-
为什么要删除?
-
例如,如果这个 id 从未获得过额外的浏览量 - 除非我将其删除 - 它总会得到更新。
标签: redis counter-cache