在事务中向Redis集合添加元素值

0 投票
2 回答
1811 浏览
提问于 2025-04-17 07:20

我刚接触Redis,想在一个事务里做以下事情:

增加一个键的值,然后把增加后的值添加到一个集合里。

用Redis命令的话,大概是这样的:

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

有没有什么Redis命令可以一步完成这个,不需要两次事务,也不需要在代码里处理这个值(我用的是Python)?

非常感谢!

2 个回答

0

Redis 有一个叫 GETSET 的命令(http://redis.io/commands/getset),这个命令可以让你在同一条指令中获取一个变量的“旧”值,并把它设置为一个新的值。

我几乎可以肯定,Redis 没有办法同时增加一个值并把它添加到一个集合里,因为这两者是不同的数据类型。

希望这对你有帮助!

3

很遗憾,你不能直接这样做。不过,你可以使用一个叫做MULTI/EXEC的块来确保查询的原子性,方法如下:

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

撰写回答