Memcached基本操作

1. Memcached簡介

Memcached是一個自由開源的,高性能,分佈式內存對象緩存系統。

Memcached是一種基於內存的key-value存儲,用來存儲小塊的任意數據(字符串、對象)。這些數據可以是數據庫調用、API調用或者是頁面渲染的結果。

本質上,它是一個簡潔的key-value存儲系統。

一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。

2. Memcached安裝配置

Memcached安裝配置—菜鳥教程

//注意:路徑對應修改爲自己的安裝路徑
//安裝和卸載memcached服務
c:\memcached\memcached.exe -d install
c:\memcached\memcached.exe -d uninstall
//啓動和關閉memcached服務
c:\memcached\memcached.exe -d start
c:\memcached\memcached.exe -d stop
//-m 512 意思是設置 memcached 最大的緩存配置爲512M。
c:\memcached\memcached.exe -d runservice -m 512
//該命令可以用來查看命令幫助和參數配置
c:\memcached\memcached.exe -h

3. Memcached 連接

//執行任何命令時需要先啓動memcached服務(路徑對應修改爲自己的安裝路徑)
c:\memcached\memcached.exe -d start
//telnet HOST PORT --------- HOST:主機名 PORT:端口
telnet 127.0.0.1 11211

4. Memcached 存儲命令


1. set命令

//語法
set key flags exptime bytes [noreply] 
value 

參數說明:
key:鍵值 key-value 結構中的 key,用於查找緩存值。
flags:可以包括鍵值對的整型參數,客戶機使用它存儲關於鍵值對的額外信息。
exptime:在緩存中保存鍵值對的時間長度(以秒爲單位,0 表示永遠)
bytes:在緩存中存儲的字節數
noreply(可選): 該參數告知服務器不需要返回數據
value:存儲的值(始終位於第二行)(可直接理解爲key-value結構中的value)

例子:

set runoob 0 900 9
memcached
STORED

get runoob
VALUE runoob 0 9
memcached

END

說明:

key → runoob
flag → 0
exptime → 900 (以秒爲單位)
bytes9 (數據存儲的字節數)
value → memcached

輸出:

//數據設置成功
STORED

輸出信息說明:

STORED:保存成功後輸出。
ERROR:在保持失敗後輸出。


2. add命令

//語法
add key flags exptime bytes [noreply]
value

參數說明:
key:鍵值 key-value 結構中的 key,用於查找緩存值。
flags:可以包括鍵值對的整型參數,客戶機使用它存儲關於鍵值對的額外信息。
exptime:在緩存中保存鍵值對的時間長度(以秒爲單位,0 表示永遠)
bytes:在緩存中存儲的字節數
noreply(可選): 該參數告知服務器不需要返回數據
value:存儲的值(始終位於第二行)(可直接理解爲key-value結構中的value)

例子:

add new_key 0 900 10
data_value
STORED
get new_key
VALUE new_key 0 10
data_value
END

說明:

key → new_key
flag → 0
exptime → 900 (以秒爲單位)
bytes10 (數據存儲的字節數)
value → data_value

輸出:

//數據設置成功
STORED

輸出信息說明:

STORED:保存成功後輸出。
NOT_STORED :在保持失敗後輸出。


3. replace命令

//語法
replace key flags exptime bytes [noreply]
value

參數說明:
key:鍵值 key-value 結構中的 key,用於查找緩存值。
flags:可以包括鍵值對的整型參數,客戶機使用它存儲關於鍵值對的額外信息。
exptime:在緩存中保存鍵值對的時間長度(以秒爲單位,0 表示永遠)
bytes:在緩存中存儲的字節數
noreply(可選): 該參數告知服務器不需要返回數據
value:存儲的值(始終位於第二行)(可直接理解爲key-value結構中的value)

例子:

add mykey 0 900 10
data_value
STORED
get mykey
VALUE mykey 0 10
data_value
END
replace mykey 0 900 16
some_other_value
get mykey
VALUE mykey 0 16
some_other_value
END

說明:

key → mykey
flag → 0
exptime → 900 (以秒爲單位)
bytes10 (數據存儲的字節數)
value → data_value

輸出:

//數據設置成功
STORED

輸出信息說明:

STORED:保存成功後輸出。
NOT_STORED :在保持失敗後輸出。


4. append命令(prepend在鍵值的前面追加數據)

//語法
append key flags exptime bytes [noreply]
value

參數說明:
key:鍵值 key-value 結構中的 key,用於查找緩存值。
flags:可以包括鍵值對的整型參數,客戶機使用它存儲關於鍵值對的額外信息。
exptime:在緩存中保存鍵值對的時間長度(以秒爲單位,0 表示永遠)
bytes:在緩存中存儲的字節數
noreply(可選): 該參數告知服務器不需要返回數據
value:存儲的值(始終位於第二行)(可直接理解爲key-value結構中的value)

例子:

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END
append runoob 0 900 5
redis
STORED
get runoob
VALUE runoob 0 14
memcachedredis
END

說明:

首先我們在 Memcached 中存儲一個鍵 runoob,其值爲 memcached。
然後,我們使用 get 命令檢索該值。
然後,我們使用 append 命令在鍵爲 runoob 的值後面追加 “redis”。
最後,我們再使用 get 命令檢索該值。

輸出:

//數據設置成功
STORED

輸出信息說明:

STORED:保存成功後輸出。
NOT_STORED:該鍵在 Memcached 上不存在。
CLIENT_ERROR:執行錯誤。


5. CAS命令
說明:Memcached CAS(Check-And-Set 或 Compare-And-Swap) 命令用於執行一個”檢查並設置”的操作
它僅在當前客戶端最後一次取值後,該key 對應的值沒有被其他客戶端修改的情況下, 才能夠將值寫入。
檢查是通過cas_token參數進行的,這個參數是Memcach指定給已經存在的元素的一個唯一的64位值。

//語法
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 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

說明:

如果沒有設置唯一令牌,則 CAS 命令執行錯誤。
如果鍵 key 不存在,執行失敗。
添加鍵值對。
通過 gets 命令獲取唯一令牌。
使用 cas 命令更新數據。
使用 get 命令查看數據是否更新。

輸出:

//數據設置成功
STORED

輸出信息說明:

STORED:保存成功後輸出。
ERROR:保存出錯或語法錯誤。
EXISTS:在最後一次取值後另外一個用戶也在更新該數據。
NOT_FOUND:Memcached 服務上不存在該鍵值。

5. Memcached 查找命令


1. get命令
說明:Memcached get 命令獲取存儲在 key(鍵) 中的 value(數據值) ,如果 key 不存在,則返回空。

//語法
get key
//多個 key 使用空格隔開
get key1 key2 key3

參數說明:
key:鍵值 key-value 結構中的 key,用於查找緩存值。

例子:

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END

說明:
使用 runoob 作爲 key,過期時間設置爲 900 秒。



2. gets命令
Memcached gets 命令獲取帶有 CAS 令牌存 的 value(數據值) ,如果 key 不存在,則返回空。

//語法
get key
//多個 key 使用空格隔開
get key1 key2 key3

參數說明:
key:鍵值 key-value 結構中的 key,用於查找緩存值。

例子:

set runoob 0 900 9
memcached
STORED
gets runoob
VALUE runoob 0 9 1
memcached
END

說明:
在使用gets命令的輸出結果中,在最後一列的數字1代表了key爲runoob的CAS令牌。



3. delete命令
Memcached delete 命令用於刪除已存在的 key(鍵)。

//語法
delete key [noreply]

參數說明:
key:鍵值 key-value 結構中的 key,用於查找緩存值。
noreply(可選): 該參數告知服務器不需要返回數據。

例子:

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END
delete runoob
DELETED
get runoob
END
delete runoob
NOT_FOUND

說明:
使用runoob作爲key,過期時間設置爲900秒。之後我們使用delete命令刪除該key。

輸出信息說明:

DELETED:刪除成功。
ERROR:語法錯誤或刪除失敗。
NOT_FOUND:key不存在。


3. incr / decr 命令
Memcached incr 與 decr 命令用於對已存在的 key(鍵) 的數字值進行自增或自減操作。
incr與decr命令操作的數據必須是十進制的32位無符號整數。
如果key不存在返回NOT_FOUND,如果鍵的值不爲數字,則返回 CLIENT_ERROR,其他錯誤返回 ERROR。

//語法
incr key increment_value

參數說明:
key:鍵值 key-value 結構中的 key,用於查找緩存值。
increment_value: 增加的數值。

例子:

set visitors 0 900 2
10
STORED
get visitors
VALUE visitors 0 2
10
END
incr visitors 5
15
get visitors
VALUE visitors 0 2
15
END

說明:
使用 visitors 作爲 key,初始值爲 10,之後進行加 5 操作。

輸出信息說明:

NOT_FOUND:key 不存在。
CLIENT_ERROR:自增值不是對象。
ERROR其他錯誤,如語法錯誤等。

decr命令與此類似


6. Memcached 統計命令


1. Memcached stats 命令
說明:Memcached stats 命令用於返回統計信息例如 PID(進程號)、版本號、連接數等。

//語法
stats


2. Memcached stats items命令
說明:Memcached stats items 命令用於顯示各個slab中 item的數目和存儲時長(最後一次訪問距離現在的秒數)。

//語法
stats items


3. Memcached stats slabs命令
說明:Memcached stats slabs 命令用於顯示各個slab的信息,包括chunk的大小、數目、使用情況等。

//語法
stats slabs
  1. Memcached stats sizes命令
    說明:Memcached stats sizes 命令用於顯示所有item的大小和個數。該信息返回兩列,第一列是item的大小,第二列是item的個數。
//語法
stats sizes

例子:

stats sizes
STAT 96 1
END


4. Memcached flush_all 命令
說明:Memcached flush_all 命令用於用於清理緩存中的所有 key=>value(鍵=>值) 對。
該命令提供了一個可選參數 time,用於在制定的時間後執行清理緩存操作。

//語法
flush_all [time] [noreply]

例子:

set runoob 0 900 9
memcached
STORED
get runoob
VALUE runoob 0 9
memcached
END
flush_all
OK
get runoob
END

7. Java連接Memcached服務

Java連接Memcached服務—菜鳥教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章