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服務上不存在該鍵值。