Redis中哈希表的原子GETSET操作

8
我将在Redis中为多个URL存储一个点击计数器。我打算使用哈希,因为这似乎是有意义的。它还具有原子递增函数,这对我的用例至关重要。
每隔一段时间,我将把每个URL的点击次数聚合到另一个数据存储中。为此,我想获取点击次数并将其重置为零。我似乎找不到类似于GETSET的适用于哈希的操作。如果在获取点击次数和将其重置为零之间记录了一次点击,则需要某种原子操作才能避免丢失。
我是否漏掉了什么?我想到的一个替代方案是在我的客户端(Python)代码中对URL进行哈希处理,并使用字符串命令,但当Redis提供哈希本身时,这似乎有点像骗局。
1个回答

6
请看redis的事务文档,特别是WATCHMULTI命令的组合:
被WATCH监视的键会被检测是否有变化。如果在EXEC命令之前至少有一个被监视的键被修改,整个事务将中止,EXEC返回一个空的多条批量回复来通知事务失败。
那么WATCH到底是什么呢?它是一个条件性的命令:我们要求Redis只在没有其他客户端修改任何WATCHed键时执行事务。否则,根本不进入事务。

1
不幸的是,这是整个哈希表的锁,而不是单个条目的锁。看起来您不能观测哈希表中的单个条目。 - ticktock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接