3

(EventMachine を使用する Ruby ドライバー) のようなイベント化された Redis ドライバーでMULTI/ EXEC(および) をどのように使用しますか? 私が実行した場合:WATCHem-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、それは素晴らしい解決策とは思えません。他の誰かがより良い方法を見つけましたか?

4

1 に答える 1

0

@baluが質問へのコメントで述べたように、複数の接続なしでは実行できません。

于 2011-09-28T10:20:48.893 に答える