【问题标题】:batch video views to redis instead of directly to the db批量视频视图到 redis 而不是直接到数据库
【发布时间】:2021-03-24 09:57:47
【问题描述】:

我们的想法是使用INC/HINCRBY 将视频观看次数计数器从直接插入数据库移动到 Redis,并且每 x 秒获取一批并一次性插入数据库。在我看来,有两种选择:

  1. 为每个ID和INC设置密钥
  2. 使用哈希和HINCRBY

在我看来,这两种方法都有一个缺点——没有POP/ atomic 命令来获取和重置视图计数器。这让我看到了GET + DEL 乘以批量大小的排序事务 - 管道或 LUA..

这些是我唯一的选择吗?有更好的选择吗?最佳做法是什么?

顺便说一句,也许这是针对不同的主题,但我需要相同的日期逻辑而不是计数器(最后一次活动..),所以最好对两者都有一个逻辑。

【问题讨论】:

  • 为什么需要在数据库中插入redis计数器?为什么需要重置?如果您不需要保存到数据库中,您可以在第一次递增时使用expire
  • 我正在尝试减少来自数据库的压力 - 所以每次有人查看页面/视频时,数据库中都会发生插入/更新 - 它会在 redis 中发生,然后在推送中发生它到分贝。我确实需要这些数据。它只是不必立即在数据库中。
  • 为什么要删除?
  • 例如,如果这个 id 从未获得过额外的浏览量 - 除非我将其删除 - 它总会得到更新。

标签: redis counter-cache


【解决方案1】:

我们决定实现它的方式是将所有更新推送到一个列表中,并每隔 x 秒将它们弹出到一个事务中。改进是当前方法的 10 倍,每个方法本身就是一个事务。

尝试聚合计数器并稍后从中生成更新太麻烦了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多