0
如何在一個密鑰上調用.incr,並且只有在結果編號是<而不是某個數字時纔會增加,而無需事先調用.get?只有在<某些數字時Redis纔會增加?
事先調用.get的原因有問題,因爲如果我有多個線程。可能有100個線程執行了下面的第一行,它們都得到值「0」,結果是所有增量。競賽條件,如果你願意的話。
currentVal = $redis.get('key') #all threads could be done executing this but not yet the below if condition.
if(currentVal < 3)
$redis.incr('key') #1
end
我已經嘗試過這樣做和似乎可能的唯一方法是使用Lua腳本。你可以請求一個像「INCRBYTOMAX」這樣的命令。 – tadman
如果currentVal是硬編碼的,你不能在'incr'和'decr'之後進行檢查嗎? –