redisカウンタをインクリメントしたいが、ゼロからではなく、定義された開始番号(たとえば-5)からカウントを開始したい。redisの開始番号を定義INCR
私はこれがLuaスクリプトの中でSET/INCRによってどのように達成されるのか知っていますが、INCRコマンドでのみ達成できるかどうかは疑問でした。インクリメントが定義されているINCRBYで定義したものと同様のものが、開始点を定義できますか?
redisカウンタをインクリメントしたいが、ゼロからではなく、定義された開始番号(たとえば-5)からカウントを開始したい。redisの開始番号を定義INCR
私はこれがLuaスクリプトの中でSET/INCRによってどのように達成されるのか知っていますが、INCRコマンドでのみ達成できるかどうかは疑問でした。インクリメントが定義されているINCRBYで定義したものと同様のものが、開始点を定義できますか?
Luaは、この手順のために完全に罰金ですが、トランザクションでそれをも行うことができます。
MULTI
SET counter -5 NX
INCR counter
EXEC
あなたがそれを設定するために、あなたの最初の呼び出しをしたい場合は、あなたを-5
するようINCR
は、毎回実行されます必要がありますSET
の値を-6
に変更します。これら4つのコマンドをパイプして、4つのRTTがコマンドを送信しないようにすることもできます。
INCRコマンドだけでは実行できません。私はSETNXの値を検査し、0(キーが存在することを意味する)を返した場合は、それをインクリメントします。
ルアなしで、このようにしてアトミック性を達成できることに注意してください。キーが存在しない場合は作成し、初期値に設定しますそれは、1往復、原子。存在していた場合はインクリメントしますが、キーが期限切れになっていないか、2つの呼び出しの間に削除されていない限り、一貫性があります。
しかし、これにはLuaスクリプトを使用しない理由はありませんが、これを行うのが好ましい方法です。