Memcached 安裝配置 & 基本指令

Memcached 

Memcached 安裝配置 & 基本指令

Java 客戶端連接 Memcached & Spring 集成


Memcached 簡介

Memcached是一個開源、高性能、分佈式內存對象緩存系統,同樣是一個內存 key-value 數據庫,常常用在各種緩存業務上,與 redis 相比,memcached 雖然不支持那麼豐富的 value 數據類型,也不支持數據持久化,但是由於結構簡潔,在二次開發上更加簡單,具有更好的拓展性;
memcached 支持多平臺,包括:Linux,FreeBSD,Solaris,Mac OS,Windows 等;
memcached 官網:http://memcached.org

Memcached 安裝配置

以下使用 Ubuntu、Debian 的 apt-get 工具進行快速安裝,也可以通過 webget 獲取 http://memcached.org/latest 上的源碼包自行編譯安裝;
對於 Rehat 系的 Linux 系統(Fedora,CentOS)對應使用 yum 工具快速安裝,基本是一樣的;
對於 memcahed 需要安裝 libevent 和 memcahed 兩個安裝包;
 
$ 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,直接對其中儲存的鍵值數據進行操作;

儲存指令

set key flags exptime bytes [noreply]
value
設置 key-value,如果 key 已經存在,則覆蓋該數據;
返回值 -- STORED:保存成功; ERROR:保存失敗
add key flags exptime bytes [noreply]
value
設置 key-value,如果 key 已經存在,則不更新數據;
返回值 -- STORED:保存成功; NOT_STORED:保存失敗
replace key flags exptime bytes [noreply]
value
替換 key-value,如果 key 已經存在,替換爲新設置的 value;
返回值 -- STORED:保存成功; NOT_STORED:保存失敗
append key flags exptime bytes [noreply]
value
後追加 key-value,如果 key 已經存在,則在該 key 的 value 後追加數據;
返回值 -- STORED:保存成功; NOT_STORED:保存失敗; CLIENT_ERROR:執行錯誤
prepend key 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:已過期的數據條目來存儲新數據的數目




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