2017-04-01 23 views
0

我们的数据库主要是读取数据,但我们希望在视频中添加“查看次数”和“竖起大拇指”。如何处理redis中的“查看次数”

当我们强调在mysql中测试增量视图时,我们的数据库开始死锁。

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

有没有更好的方法去做这件事?或者说redis通知不一致的说法不正确。

感谢,

萨米

回答

0

Redis的密钥空间通知是一致的,但因此无法保证传送。

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

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

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

+0

我会试试这个!谢谢! –

+0

有没有办法扫描特定的按键,还是只扫描全部并搜索每个单独的按键 –