遞增

2018-02-24 16:09 更新

對于?INCR?命令,我們有一些特別的事情要說明。Redis 為什么會提供一個自己很簡單就 能實(shí)現(xiàn)的功能呢?就像下面這么簡單:

x = GET count
x += 1
SET count x

然而問題是,這種遞增操作只能用于單客戶端上。看一下,如果兩個客戶端同時執(zhí)行這樣 的操作會發(fā)生什么:

  1. 客戶端 A 讀取值 x 為10
  2. 客戶端 B 讀取值 x 為10
  3. 客戶端 A 寫 x 的值為11
  4. 客戶端 B 寫 x 的值為11

我們希望 x 的值為12,但是真實(shí)的 x 的值僅僅是11,這是因?yàn)槟阕约憾x的遞增操作不是 一個原子性操作。使用 Redis 的?INCR?命令可以防止這樣的事情發(fā)生, 因?yàn)樗且粋€原 子性操作。Redis 為許多不同類型的數(shù)據(jù)提供了類似的原子性操作。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號