(EventMachine を使用する Ruby ドライバー) のようなイベント化された Redis ドライバーでMULTI
/ EXEC
(および) をどのように使用しますか? 私が実行した場合:WATCH
em-hiredis
redis.multi do
redis.sadd("foo", "bar") do
redis.inc("baz", "qux") do
redis.exec do
puts 'yay!'
end
end
end
end
EXEC
多くのことが起こっている場合、アプリケーションの他の部分が .実行に 1 秒以上かかると、インクリメント コマンドの一部がMULTI
/の一部として送信されますEXEC
-- トランザクションを中止したい場合はどうすればよいでしょうか? トランザクションの一部になってしまったインクリメントは消えてしまいます。さらに悪いシナリオで)。
MULTI
/の進行中に他のアクションを実行できないように、ある種のロックを実装できると思いますがEXEC
、それは素晴らしい解決策とは思えません。他の誰かがより良い方法を見つけましたか?