如何处理redis中的“查看次数”
问题描述:
我们的数据库主要是读取数据,但我们希望在视频中添加“查看次数”和“竖起大拇指”。如何处理redis中的“查看次数”
当我们强调在mysql中测试增量视图时,我们的数据库开始死锁。
我在考虑处理这个问题,通过拥有查看计数的redis DB,并且只有在密钥过期后才写入数据库。但是,我听到通知不一致,我不想丢失视图数据。
有没有更好的方法去做这件事?或者说redis通知不一致的说法不正确。
感谢,
萨米
答
Redis的密钥空间通知是一致的,但因此无法保证传送。
如果您不想丢失数据,请实施自己的手动过期计数器的后台进程 - 即复制到MySQL并从Redis中删除。
实现这种懒惰驱逐模式有几种方法。例如,您可以使用带有两个字段的Redis哈希值:您可以使用HINCRBY
的值字段和用于到期逻辑目的的时间戳字段。您的后台进程然后可以通过SCAN
键空间来识别过期的密钥。
另一种方法是使用Sorted Sets来管理计数器。在某些情况下,您可以只使用一个Sorted Set,将TTL和count分别编码到每个成员的分数中(分别使用float的整数和小数部分),但在大多数情况下,使用两个Sorted Sets更简单 - 一个用于TTL和其他皮草价值。
我会试试这个!谢谢! –
有没有办法扫描特定的按键,还是只扫描全部并搜索每个单独的按键 –