對于?INCR
?命令,我們有一些特別的事情要說明。Redis 為什么會提供一個自己很簡單就 能實(shí)現(xiàn)的功能呢?就像下面這么簡單:
x = GET count
x += 1
SET count x
然而問題是,這種遞增操作只能用于單客戶端上。看一下,如果兩個客戶端同時執(zhí)行這樣 的操作會發(fā)生什么:
我們希望 x 的值為12,但是真實(shí)的 x 的值僅僅是11,這是因?yàn)槟阕约憾x的遞增操作不是 一個原子性操作。使用 Redis 的?INCR
?命令可以防止這樣的事情發(fā)生, 因?yàn)樗且粋€原 子性操作。Redis 為許多不同類型的數(shù)據(jù)提供了類似的原子性操作。
更多建議: