2016-04-26 9 views
2

簡単に、Redis INCRを使用してカウンタのアトミックインクリメントを保証していますが、カウンタの開始値がInt64.MaxValueより小さい不確定な値があります。Int64 maxvalueがRedis INCRで処理された場合

Red64は値がInt64.MaxValueに達したときに値をリセットするか、エラーをスローしますか?

私は、ドキュメントを読んで、それは何が起こるか言っていない、と私は本当にそれがエラーをスローしますロールオーバー

答えて

9

の原子の性質を維持したいです。私はRedisのは2電源63件まで保持し、それがその制限を超えた場合にエラーをスローすることができ、あなたのユースケース

127.0.0.1:6379> set value 9223372036854775807 (2 power 63 -1) 
OK 
127.0.0.1:6379> incr value 
(error) ERR increment or decrement would overflow 
127.0.0.1:6379> 

のための小さな実験を行いました。 「範囲外」エラーまたは「オーバーフロー」エラーの可能性があります

エラーが発生すると、その例外をキャッチしてアプリケーションロジックの値をリセットできます。

+0

ありがとうございます - それを試してみるためにクリックしませんでした。 –