【memcache快取專題(2)】memcache安裝與命令列使用

菜問發表於2015-12-21

安裝

在windows上安裝

略(都玩到快取的程度了,就沒必要在windows上搗弄了)
給個參考: http://blog.csdn.net/yuhui_fish/article/details/7762299

在Linux上安裝

memcached 依賴於 libevent 庫,因此我們需要先安裝 libevent.
分別到 libevent.org 和 memcached.org 下載最新的 stable 版本(穩定版).
先編譯 libevent ,再編譯 memcached,編譯 memcached 時要指定 libevent 的路徑.

yum install gcc make cmake autoconf libtool # 準備編譯環境

tar zxvf libevent-2.0.21-stable.tar.gz
cd libevent-2.0.21-stable 
./configure --prefix=/usr/local/libevent
make && make install

tar zxvf memcached-1.4.5.tag.gz
cd memcached-1.4.5
./configure--prefix=/usr/local/memcached 
--with-libevent=/usr/local/libevent
make && make install

注意: 在虛擬機器下練習編譯,一個容易碰到的問題—虛擬機器的時間不對,
導致的 gcc 編譯過程中,檢測時間通不過,一直處於編譯過程.
解決:

# date -s `yyyy-mm-dd hh:mm:ss`
# clock -w # 把時間寫入 cmos

命令列使用

啟動服務

/usr/local/memcached/bin/memcached -m 64 -p 11211 -u nobody -vv
# 把-vv換成-d就變成後臺執行
# -m 指定預設記憶體為64M

memcached的基本命令(安裝、解除安裝、啟動、配置相關)

-p 監聽的埠 
-l 連線的IP地址, 預設是本機  
-d start 啟動memcached服務 
-d restart 重起memcached服務 
-d stop|shutdown 關閉正在執行的memcached服務 
-d install 安裝memcached服務 
-d uninstall 解除安裝memcached服務 
-u 以的身份執行 (僅在以root執行的時候有效) 
-m 最大記憶體使用,單位MB。預設64MB 
-M 記憶體耗盡時返回錯誤,而不是刪除項 
-c 最大同時連線數,預設是1024 
-f 塊大小增長因子,預設是1.25 
-n 最小分配空間,key+value+flags預設是48 
-h 顯示幫助

增刪改查

沒有客戶端,通過telnet 127.0.0.1 11211 ctrl + ] display 回車來玩,先設定後存入value;

新增

語法: add key flag expire length
例項: add name 0 60 5

add     指令名 新增
key     給值取的一個唯一的名稱,如果一個key已經存在,再放入是失敗的
flag    memcached 基本文字協議,傳輸的東西是理解成字串來儲存.也就是說不管你往裡面存入什麼資料,最終都是字串來儲存;所以我們一般把陣列等資料,序列化以後存入memcache,到取出來的時候,這個flag就決定是否要序列化;
expire  有效期
length  快取的長度(單位為位元組)

expire:

設定快取的有效期,有 3 種格式

  1. 設定秒數, 從設定開始數,第 n 秒後失效.

  2. 時間戳, 到指定的時間戳後失效.比如在團購網站,快取的某團到中午 12:00 失效. add key 0 1379209999 6

  3. 設為 0. 不自動失效.有種誤會,設為 0,永久有效.錯誤的.

    1. 編譯 memcached 時,指定一個最長常量,預設是 30 天.所以,即使設為 0,30 天后也會失效.

    2. 可能等不到 30 天,就會被新資料擠出去.後續說記憶體機制的時候會細說

刪除

delete key [time]
刪除指定的 key. 如加可選引數 time,則指刪除 key,並在刪除 key 後的 time 秒內,不允許get,add,replace 操作此 key.

清空

flush_all [time]
在多少秒內清空~沒有time引數的話就馬上清空

更新

set name 0 60 5
和add不同,如果name存在就更新,如果不存在就是新增。

replace key flag expire length
必須在key存在的前提下才有更新。

incr/decr key num
incr,decr 命令:增加/減少值的大小
incr,decr 操作是把值理解為 32 位無符號來+-操作的. 值在[0-2^32-1]範圍內,也就是說dec怎麼減少都不會少於0;

append key 0 60 15
memcache儲存的是字串,append就是追加新字串到已儲存的KEY上

prepend key 0 60 15
在已有的key上加上新的value;

讀取

get key1 key2
獲取key的值,注意不支援get key*的方式

stats

key descrption
pid memcache伺服器的程式ID
uptime 伺服器已經執行的秒數
time 伺服器當前的unix時間戳
version memcache版本
pointer_size 當前作業系統的指標大小(32位系統一般是32bit)
rusage_user 程式的累計使用者時間
rusage_system 程式的累計系統時間
curr_items 伺服器當前儲存的items數量
total_items 從伺服器啟動以後儲存的items總數量
bytes 當前伺服器儲存items佔用的位元組數
curr_connections 當前開啟著的連線數
total_connections 從伺服器啟動以後曾經開啟過的連線數
connection_structures 伺服器分配的連線構造數
cmd_get get命令(獲取)總請求次數
cmd_set set命令(儲存)總請求次數
get_hits 總命中次數
get_misses 總未命中次數
evictions 為獲取空閒記憶體而刪除的items數(分配給memcache的空間用滿後需要刪除舊的items來得到空間分配給新的items)
bytes_read 總讀取位元組數(請求位元組數)
bytes_written 總髮送位元組數(結果位元組數)
limit_maxbytes 分配給memcache的記憶體大小(位元組)
threads 當前執行緒數

功能靈活性相對redis要弱很多…

相關文章