2011-12-16 15 views
0

私はherokuでホストされているruby on railsアプリケーションの解析にredisを使用しています。私はredisタイムアウトをどのように処理すべきか考えています。 Redisタイムアウトはあまり頻繁に起こらないが、起こる。ここで私はそれらを処理する場所です:私は思ったんだけどSET操作中にredisタイムアウトが発生した場合、redis dbのデータは変更されていますか?

begin 
    Timeout::timeout(5) { 
    # an operation that modifies data in redis db 
    } 
rescue Timeout::Error 
    # do something 
end 

:Redisののtimesoutと実行が救助ブロックにスローされた場合、それはRedisのDBにデータがこの中に変更されていることが可能ですか?それが変更されていないという保証はありますか(後でこの操作を再試行するバックグラウンドジョブを作成する可能性があります)。

答えて

0

Redisがコマンドを受け取ったと仮定すると、クライアントがACKを受け取れない場合、私はそれをロールバックするとは思っていません。タイムアウトの場合にredisを実行したくない場合は、トランザクションを使用する必要があります。

関連する問題