¿Cómo puedo leer desde Redis dentro de un bloque MULTI en Ruby?

Estoy encapsulando un conjunto complicado de comandos de Redis en una transacción MULTI, pero la lógica de la transacción depende de los valores que ya están en Redis. Pero todas las lecturas dentro de una transacción parecen devolvernil

Aquí hay un ejemplo que demuestra el problema:

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

Obviamente quiero que el último valor de retorno sea'baz' - ¿Cómo puedo conseguir esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta