Memcached命令操作手冊login
Memcached命令操作手冊
作者:php.cn  更新時間:2022-04-13 17:53:40

Memcached CAS 指令


Memcached CAS(Check-And-Set 或Compare-And-Swap) 指令用於執行一個"檢查並設定"的動作

它只在目前客戶端最後一次取值後,該key 對應的值沒有被其他客戶端修改的情況下, 才能夠將值寫入。

檢查是透過cas_token參數進行的, 這個參數是Memcach指定給已經存在的元素的一個唯一的64位元值。

語法:

CAS 指令的基本語法格式如下:

cas key flags exptime bytes unique_cas_token [noreply]
value

參數說明如下:

  • ##key: 鍵值key-value 結構中的key,用於尋找快取值。

  • flags:可以包含鍵值對的整數參數,客戶機使用它儲存關於鍵值對的額外信息 。

  • exptime:在快取中儲存鍵值對的時間長度(以秒為單位,0 表示永遠)

  • bytes:在快取中儲存的位元組數

  • #unique_cas_token透過gets 指令取得的一個唯一的64位元值。

  • noreply(可選): 此參數告知伺服器不需要傳回資料

  • ##value

    :儲存的值(永遠位於第二行)(可直接理解為key-value結構中的value)

  • 實例

要在Memcached 上使用CAS指令,你需要從Memcached 服務商透過gets 指令取得令牌(token)。

gets 指令的功能類似於基本的 get 指令。兩個指令之間的差異在於,gets 傳回的資訊稍微多一點:64 位元的整數值非常像名稱/值對的 "版本" 識別碼。

實例步驟如下:

    如果沒有設定唯一令牌,則 CAS 指令執行錯誤。
  • 如果鍵 key 不存在,執行失敗。
  • 新增鍵值對。
  • 透過 gets 指令取得唯一令牌。
  • 使用cas 指令更新資料
  • 使用get 指令查看資料是否更新
  • cas tp 0 900 9
    ERROR             <− 缺少 token
    
    cas tp 0 900 9 2
    memcached
    NOT_FOUND         <− 键 tp 不存在
    
    set tp 0 900 9
    memcached
    STORED
    
    gets tp
    VALUE tp 0 9 1
    memcached
    END
    
    cas tp 0 900 5 1
    redis
    STORED
    
    get tp
    VALUE tp 0 5
    redis
    END
  • 輸出

如果資料新增成功,則輸出:

STORED

輸出資訊說明:

  • #STORED

    :儲存成功後輸出。

  • ERROR

    :儲存出錯或語法錯誤。

  • EXISTS

    :在最後一次取值後另外一個使用者也在更新該資料。

  • NOT_FOUND

    :Memcached 服務上不存在該鍵值。

#