在Redis中散列的原子GETSET

Edw*_*ale 8 hash atomic redis

我将在Redis中为一些URL存储一个点击计数器.我打算使用哈希,因为这似乎有意义.它还具有原子增量功能,这对我的用例至关重要.

我经常将每个URL的命中数聚合到另一个数据存储中.为此,我想得到命中数并将其重置为零.我似乎找不到像GETSET这样适用于哈希的操作.如果我在获得命中计数和将其重置为零之间记录命中,则在没有某种原子操作的情况下它会丢失.

我错过了什么吗?我遇到的另一种选择是在我的客户端(python)代码中散列URL并使用字符串命令,但是当Redis提供散列本身时,这看起来有点像黑客.

yoj*_*o87 6

尝试查看redis 事务文档,即WATCHMULTI命令的组合:

监视WATCHed键以检测对它们的更改.如果在EXEC命令之前修改了至少一个监视密钥,则整个事务将中止,并且EXEC返回Null多批量回复以通知该事务失败.

...

那么WATCH究竟是什么呢?这是一个使EXEC成为条件的命令:只有在没有其他客户端修改任何WATCHed键时,我们才会要求Redis执行该事务.否则,根本不输入交易.