Redis将元素值添加到事务中的集合

时间:2011-11-29 20:12:13

标签: python transactions redis

我是redis的新手,我正在尝试在tranaction中执行以下操作:

增量键 将之前的递增值添加到集合

使用redis命令就像

multi
i = incr "value"
sadd "set" i
exec

是否有任何redis命令可以一步完成而不需要两个事务并处理代码中的值(在我的情况下是python代码)?

非常感谢

2 个答案:

答案 0 :(得分:2)

不幸的是你不能直接这样做。您可以使用MULTI / EXEC块以下列方式保证查询的原子性:

do {
    WATCH value
    i = 1 + GET value
    MULTI
    set value i
    SADD set i
    result = EXEC
} while (result == nil)

答案 1 :(得分:0)

Redis有一个GETSET(http://redis.io/commands/getset)命令,您可以在其中获取变量的“旧”值,并在同一命令中将其设置为新值。

几乎可以肯定没有方法来输入值并将其添加到集合中,因为它们是redis的不同数据类型。

希望它有所帮助!