雷迪斯2.0.3
在我的 Redis DB 中,我有一组项目。每个项目都有一个与其关联的计数器:
MULTI
SADD "items-set" "foo"
INCRBY "items:foo" 10000
EXEC
新项目会以随机间隔添加到集合中。
当用户执行特定操作时,计数器会递减:
new_counter = DECR "items:foo"
当计数器降到零以下时,我需要自动从集合中删除该项目(或者:当计数器恰好达到零时,我可以为此修复逻辑。)
if new_counter < 0 then
MULTI
SREM "items-set" "foo"
DEL "items:foo"
EXEC
end
如何在不通过项目名称锁定的情况下执行此操作SETNX
/GETSET
?
涉及更改在 Redis 中存储数据的方式的解决方案是可以接受的。 (但是,为了以防万一,我保留用一些我在最初的文本中可能会错过的特定任务细节来反驳他们的权利。)
只需使用 Redis 2.2 的新 WATCH 功能即可:
WATCH items-set items:foo
count = GET items:foo
IF count == 0:
MULTI
SREM items-set foo
SET items:foo count-1
EXEC
ELSE:
MULTI
SET items:foo count-1
EXEC
要理解该示例,您需要了解 WATCH 的工作原理。请检查文档:http://redis.io http://redis.io site.
附注Redis 2.0.3 没有办法做到这一点
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)