Memcached 安裝配置 & 基本指令
阿新 • • 發佈:2019-01-01
Memcached
Memcached 簡介
Memcached是一個開源、高效能、分散式記憶體物件快取系統,同樣是一個記憶體 key-value 資料庫,常常用在各種快取業務上,與 redis 相比,memcached 雖然不支援那麼豐富的 value 資料型別,也不支援資料持久化,但是由於結構簡潔,在二次開發上更加簡單,具有更好的拓展性;memcached 支援多平臺,包括:Linux,FreeBSD,Solaris,Mac OS,Windows 等;Memcached 安裝配置
以下使用 Ubuntu、Debian 的 apt-get 工具進行快速安裝,也可以通過 webget 獲取 http://memcached.org/latest$ sudo apt-get update # 更新 apt 庫
$ sudo apt-get install libevent # 安裝 libevent 的二進位制包
$ sudo apt-get install memcached # 安裝 memcached 的二進位制包
一般 apt-get 安裝的可執行程式位於 /usr/bin 目錄下,也可以通過 dkpg -L memcached 檢視 memcached 包的安裝目錄,可以直接通過 /user/bin memcached 啟動 memcached,也可以將該路徑寫到系統 PATH 變數中,方便啟動;Memcached 啟動和引數
$ memcached # 預設啟動 memcached
$ memcached -h # 檢視 memcached 啟動引數說明
$ memcached -d # 後臺啟動 memcahed
memcached 含有豐富的啟動引數,可以直接在啟動 memcached 時輸入對應的引數和引數值,也可以通過修改預設配置檔案來修改預設啟動引數,一般通過 apt-get 安裝的預設配置檔案在 /usr/share/memcached/memcached.conf.default ,可以通過 dpkg 指令查詢該檔案的位置;常用的引數如下:- -d 以守護程序(後臺程序)的方式啟動 ;
- -m 分配給 Memcache 使用的記憶體上限,單位 MB,預設 64;
- -u 執行 Memcache 的使用者,預設值 memcache;
- -l 監聽的伺服器 IP 地址,可以有多個 IP,預設值 127.0.0.1;
- -p 監聽的埠,最好設定為 1024 以上的值,預設值 11211;
- -c 最大執行的併發連線數,預設 1024;
- -P 設定儲存 Memcache 的 pid檔案,當 memcahed 守護程序執行時,相關的 pid 會被寫入該檔案,需要確保 memcache 有讀寫該檔案的許可權;
Memcached 的終端連線
memcached 本身並沒有像 Redis 的 redis-cli 那樣的終端工具,可以通過系統的 telnet 連線 memcache-server,如下:$ telnet 127.0.0.1 11211 # 終端連線 memcached
set key1 0 0 5 # 新增鍵值
assad
STOTRED
get key1 # 獲取鍵值
VALUE assad
END
quit # 推出 telnet 連線
Memcached 常用鍵值讀寫指令
可以通過終端連線 memcached,直接對其中儲存的鍵值資料進行操作;儲存指令
setkey flags exptime bytes [noreply] value | 設定 key-value,如果 key 已經存在,則覆蓋該資料; 返回值 -- STORED:儲存成功; ERROR:儲存失敗 |
addkey flags exptime bytes [noreply] value | 設定 key-value,如果 key 已經存在,則不更新資料; 返回值 -- STORED:儲存成功; NOT_STORED:儲存失敗 |
replacekey flags exptime bytes [noreply] value | 替換 key-value,如果 key 已經存在,替換為新設定的 value; 返回值 -- STORED:儲存成功; NOT_STORED:儲存失敗 |
appendkey flags exptime bytes [noreply] value | 後追加 key-value,如果 key 已經存在,則在該 key 的 value 後追加資料; 返回值 -- STORED:儲存成功; NOT_STORED:儲存失敗; CLIENT_ERROR:執行錯誤 |
prependkey flags exptime bytes [noreply] value | 前追加 key-value,如果 key 已經存在,則在該 key 的 value 前面追加資料 返回值 -- STORED:儲存成功; NOT_STORED:儲存失敗; CLIENT_ERROR:執行錯誤 |
cas key flags exptime bytes unique_cas_token [noreply] value | 檢查並設定 key-value (check-and-set),僅在當前客戶端最後一次取值後,該 key 的 value 還沒有被客戶端修改的情況下,才能將該值寫入,檢查是通過 unique_cas_token 引數進行的,該引數是由 gets 獲取的唯一一個 64 位值; 返回值 -- STORED:儲存成功; ERROR:儲存失敗; EXISTS:在最後一次取值另外一個使用者也在更新該資料; NOT_FOUND:不存在該資料; |
以上指令中引數的說明如下:
- key:key 欄位;
- flags:可以包括鍵值對的整型引數,客戶端使用該引數值儲存鍵值對以外的資訊;
- exptime:在快取中儲存鍵值對的時間長度,單位秒,0 表示永久;
- bytes:value 在快取中儲存的位元組數;
- noreply(可選):告知伺服器不需要返回資料;
- value:儲存的 value 值(必須位於第二行);
# 關於 cas 指令的示例
set user 0 0 5 # 寫入 user = assad
assad
STORED
cas user 0 0 5 1 # 檢查並寫入 user = assad,cas令牌為1
vancy
EXIST # cas 令牌無效
gets user # 獲取 user,並返回一個 cas 值
VALUE user 0 5 4 # 該 user 的 cas 值為 4
assad
END
cas user 0 0 5 4 # 通過 gets 獲取的 cas 令牌設定 user
vancy
STORED
查詢,刪除,更改指令
get key1 [ key2 key3 ...] | 獲取指定 key 的 value |
gets key1 [ key2 key3 ...] | 獲取指定 key 的 value,包括該 key 的 exptime,bytes,和一個 cas 值; |
del key1 [ key2 key3 ...] [noreply] | 刪除指定 key |
incr key increment_value decr key decrement_value | 對指定 key 儲存的 value執行自增,自減 操作,該 value 必須是十進位制32位無符號數值; |
系統統計資訊指令
stats | 輸出系統統計資訊,詳細的資訊列表說明如下 |
stats sizes | 顯示所有 items 的大小、個數 |
stats slabs | 顯示各個 slabs 資訊,包括 chunk 的大小、數目、使用情況等 |
stats items | 顯示各個 slab 中 items 的數目和空閒時長 |
flush_all [time] [noreply] | 清除快取中的所有鍵值,time 引數用於設定延遲執行時間,單位s |
stats 指令返回的統計資訊列表:
- pid: memcache伺服器程序ID
- uptime:伺服器已執行秒數
- time:伺服器當前Unix時間戳
- version:memcache版本
- pointer_size:作業系統指標大小
- rusage_user:程序累計使用者時間
- rusage_system:程序累計系統時間
- curr_connections:當前連線數量
- total_connections:Memcached執行以來連線總數
- connection_structures:Memcached分配的連線結構數量
- cmd_get:get命令請求次數
- cmd_set:set命令請求次數
- cmd_flush:flush命令請求次數
- get_hits:get命令命中次數
- get_misses:get命令未命中次數
- delete_misses:delete命令未命中次數
- delete_hits:delete命令命中次數
- incr_misses:incr命令未命中次數
- incr_hits:incr命令命中次數
- decr_misses:decr命令未命中次數
- decr_hits:decr命令命中次數
- cas_misses:cas命令未命中次數
- cas_hits:cas命令命中次數
- cas_badval:使用擦拭次數
- auth_cmds:認證命令處理的次數
- auth_errors:認證失敗數目
- bytes_read:讀取總位元組數
- bytes_written:傳送總位元組數
- limit_maxbytes:分配的記憶體總大小(位元組)
- accepting_conns:伺服器是否達到過最大連線(0/1)
- listen_disabled_num:失效的監聽數
- threads:當前執行緒數
- conn_yields:連線操作主動放棄數目
- bytes:當前儲存佔用的位元組數
- curr_items:當前儲存的資料總數
- total_items:啟動以來儲存的資料總數
- evictions:LRU釋放的物件數目
- reclaimed:已過期的資料條目來儲存新資料的數目