天天看點

memcached實戰系列(三)memcached指令使用

memcached指令的使用,在這裡我們最好了解一下指令的含義,對指令有一個大緻的了解,在了解的基礎上進行使用。這裡的命名是常用的crud指令的示範。

标準協定:Memcached所有的标準協定包含在對item執行指令過程中,一個item包含兩行:

第一行:Key Flags ExpirationTime Bytes

Key:Key 用于查找緩存值

Flags:一個32位的标志值,客戶機使用它存儲關于鍵值對的額外資訊(譬如使用者規定1 json 2 xml )使用者自己的業務标記使用場景 比如 我可以設定為1緩存的是網頁的熱點2緩存的是app的熱點。

Expiration time:在緩存中儲存鍵值對的時長(以秒為機關,0表示永遠)(伺服器挂了資料沒了 最多30天時間因為memcached沒有提供持久化的功能)

Bytes:在緩存中存儲的位元組數(與存儲的值不對應CLIENT_ERROR bad data chunk)存儲的位元組數一定要與實際存儲值得位元組數對應,否則無法存入報錯CLIENT_ERROR

bad data chunk

比如存入值3位元組則值bytes為3值例如ksf

第二行:Value:存儲的值(始終位于第二行)

noreply:可以在指令的第一行後面加入noreply,以避免在處理互動指令的時候,等待服

務端的傳回

 向Memcached寫入值

指令有:set、add、replace、append、prepend、cas

首先進入我們的指令行

如下圖所示:

memcached實戰系列(三)memcached指令使用

set:用于向緩存添加新的鍵值對,如果鍵已經存在,則之前的值将被替換(update)

示範:

add:僅當緩存中不存在鍵時,add指令才會向緩存中添加一個鍵值對,如果緩存中已經存在鍵,則之前的值将仍然保持,伺服器響應NOT_STORED(說白了就是存在不執行指令不存在添加)

replace:僅當鍵已經存在時,replace指令才會替換緩存中的鍵。如果緩存中不存在鍵,

伺服器響應NOT_STORED

append:是在現有緩存資料後面新增資料。如果key不存在,伺服器響應NOT_STORED

prepend:是在現有緩存資料前面新增資料。如果key不存在,伺服器響應NOT_STORED

cas(Check And Set ):檢查和更新,隻有從你讀取資料後,别人沒有更新這

個資料,才能夠正确儲存。就是版本控制,通常和gets配合使用必須等于目前的版本才能更新小于大于都不行.原子性操作

gets u1

查詢結果

VALUE u1 0 3 4

cas user 0 0 2 10(版本号)

aa

擷取資料的指令有:get 、gets

get用來擷取資料,gets擷取的是資料+版本号

 删除資料的指令:delete

 incr/decr指令:如果緩存資料中存儲的是數字形式的字元串,則可以使用

incr/decr 對資料進行遞增和遞減操作,操作後的值不會為負數