memcache 協議 && Golang實現

https://github.com/quguolin/memcache


一:Error

ERROR\r\n

客戶端發送了一個不存在的命令

CLIENT_ERROR\r\n

客戶端發送了一個不符合協議的命令

SERVER_ERROR\r\n

服務的錯誤

二:Storage commands

1.<command name> <key> <flags> <exptime> <bytes> [noreply]\r\n
2.cas <key> <flags> <exptime> <bytes> <cas unique> [noreply]\r\n

command name is "set", "add", "replace", "append" or "prepend"git

set

用於將 value(數據值) 存儲在指定的 key(鍵) 中
若是set的key已經存在,該命令能夠更新該key所對應的原來的數據
  • STORED:保存成功後輸出
  • ERROR:在保存失敗後輸出

add

用於將 value(數據值) 存儲在指定的 key(鍵) 中
若是 add 的 key 已經存在,則不會更新數據(過時的 key 會更新),以前的值將仍然保持相同,而且得到響應 NOT_STORED
  • STORED:保存成功後輸出
  • NOT_STORED :在保存失敗後輸出

replace

用於向已存在 key(鍵) 的 value(數據值) 後面追加數據 
若是 key 不存在,則替換失敗,而且得到響應 NOT_STORED
  • STORED:保存成功後輸出
  • NOT_STORED :在保存失敗後輸出

append

用於向已存在 key(鍵) 的 value(數據值) 後面追加數據 
STORED:保存成功後輸出
  • NOT_STORED:該鍵在 Memcached 上不存在
  • CLIENT_ERROR:執行錯誤

prepend

用於向已存在 key(鍵) 的 value(數據值) 前面追加數據
  • STORED:保存成功後輸出
  • NOT_STORED:該鍵在 Memcached 上不存在
  • CLIENT_ERROR:執行錯誤

cas

命令用於執行一個"檢查並設置"的操做它僅在當前客戶端最後一次取值後,該key 對應的值沒有被其餘客戶端修改的狀況下, 纔可以將值寫入。
檢查是經過cas_token參數進行的, 這個參數是Memcach指定給已經存在的元素的一個惟一的64位值
首先須要從 Memcached 服務商經過 gets 命令獲取令牌(token),gets 返回64位的整型值很是像名稱/值對的 "版本" 標識符
  • STORED:保存成功後輸出
  • ERROR:保存出錯或語法錯誤
  • EXISTS:在最後一次取值後另一個用戶也在更新該數據
  • NOT_FOUND:Memcached 服務上不存在該鍵值
相關文章
相關標籤/搜索