Как я могу читать из Redis внутри блока MULTI в Ruby?

Я инкапсулирую сложный набор команд Redis в MULTI-транзакцию, но логика транзакции зависит от значений, уже имеющихся в Redis. Но все чтения внутри транзакции, кажется, возвращаютсяnil

Вот пример, демонстрирующий проблему:

[Dev]> $redis.set("foo", "bar")
=> "OK"
[Dev]> $redis.multi{ $redis.set("foo", "baz") if $redis.get("foo") == "bar" }
=> ["bar"]
[Dev]> $redis.get("foo")
=> "bar"

Очевидно, я хочу, чтобы последним возвращаемым значением было 'baz'— как мне этого добиться?

10
задан tws 2 July 2012 в 20:49
поделиться