【问题标题】:How to handle "View count" in redis如何在redis中处理“查看计数”
【发布时间】:2017-04-01 19:17:34
【问题描述】:

我们的数据库主要是阅读,但我们想在我们的视频中添加“观看次数”和“点赞/点赞”。

当我们在 mysql 中对增量视图进行压力测试时,我们的数据库开始死锁。

我正在考虑通过拥有一个保存视图计数的 redis 数据库来处理这个问题,并且只有在密钥过期后才写入数据库。但是,我听说通知不一致,我不想丢失视图数据。

有没有更好的方法来解决这个问题?还是说 redis 通知不一致不是真的。

谢谢,

萨米

【问题讨论】:

    标签: mysql redis ram horizontal-scaling


    【解决方案1】:

    Redis 的 keyspace 通知是一致的,但无法保证交付。

    如果您不想丢失数据,请实施您自己的后台进程,手动使计数器过期 - 即复制到 MySQL 并从 Redis 中删除。

    有几种方法可以实现这种惰性驱逐模式。例如,您可以使用具有两个字段的 Redis 哈希:您可以使用HINCRBY 的值字段和用于到期逻辑目的的时间戳字段。然后,您的后台进程可以SCAN 密钥空间来识别过时的密钥。

    另一种方法是使用 Sorted Sets 来管理计数器。在某些情况下,您可以只使用一个排序集,将 TTL 和计数编码到每个成员的分数中(分别使用浮点数的整数和小数部分),但在大多数情况下,使用两个排序集更简单——一个用于 TTL,一个用于其他毛皮值。

    【讨论】:

    • 我会试试这个!谢谢!
    • 有没有办法扫描特定的键,或者你只是扫描所有并搜索每个单独的键
    猜你喜欢
    • 2022-06-29
    • 2020-11-10
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-11
    • 1970-01-01
    相关资源
    最近更新 更多