[root@localhost ~]# memcached -d -m 512 -u root -p 12266 -c 256
參數名稱及意義:linux
-d 以守護進程方式啓動。若是該參數沒有指定,當按ctrl+c命令結束,memcache自動關閉web
-m 分配給memcache使用的最大內存數 單位是m,默認是64m數據庫
-u 指定運行memcache的用戶json
-l: 指定監聽的ip地址緩存
-p 指定監聽的tcp端口號,能夠經過-u指定udp端口.默認是11211服務器
-c 最大併發鏈接數數據結構
-P 報錯進程id的文件併發
linux下通常使用telnet鏈接memcache服務,以下:tcp
[root@localhost ~]# telnet 127.0.0.1 11266
添加修改key-value,命令格式:memcached
<command> <key> <flags> <exptime> <bytes>\r\n
參數名稱及意義:
command add, set或 replace
key 緩存的名字
flag 16位無符號整數,和key要存儲的數據一塊兒存儲,並在程序get緩存時,返回。
exptime 過時時間,0 表示永遠不過時,若是非零,表示unix時間或距此秒數
bytes 存儲數據的字節數
\r\n 表示換行回車
【補充】
key:學過計算機基礎和學過計算機數據庫結構的人都知道,計算機有個比較經常使用的結構叫hash,這是數據結構中最重要的數據結構。key和value就是經過hash,hash有一個本身獨造的函數,經過key計算某個固定的值,將value存到這個key計算的固定的值裏面,當咱們經過get取得時候,經過key咱們就能夠很快的在內存中找到咱們當時存的key所對應的value的值,因此速度很是快;
flag:memcache 基於簡單的文本協議,傳輸的東西,理解成字符串來存儲,有經驗的同窗會將array() object() 轉成json_encode()這個字符串,存到 memcached裏邊。那怎麼來區分當時是存的是字符串仍是array()或object()呢?這就是flag的意義。
例子:
add title 1 0 16
welcome to maizi
Stored
expire:設置緩存的有效期。它有三種方式:
1)設置它的秒數,從當前的時間算起,到第n秒失效。好比失效時間是10秒,就是從當前的時間算,過來10秒你再去get這個web的時候,它是沒有的。
2)使用時間戳的方式,就是指定明天某個時候失效,這個場景主要運用於搶購,如搶購手機,但願明天的這個時候緩存失效,能夠從相關網站得到時間戳信息以下。
3)將expire設置爲0,設置爲0後就不自動失效,有的人覺得這個是一個永久數據,這種理解是錯誤的。這裏說一種極端的方式,好比memcache掛了,再重啓memcache服務,但這裏面的數據就都不會存在 了。咱們在編譯memcache的時候,使用了一個最長的常量,默認時間爲30天,因此即便你設置爲0,30天之後,它的數據也會失效。還有一種狀況是可能我等不到這30天,就會被新的數據擠出去,這個就 是老數據被踢的這個現象。
命令結果:
STORED #表示成功
NOT_STORED #表示失敗
CLIENT_ERROR bad data chunk #輸入數據有誤
add kk 1 0 4 #回車
1234 #回車
STORED
若是key已經存在,則會添加失敗。若是數據 不是4個字節 應該會提示數據錯誤。
replace kk 1 0 2 #回車
11 #回車
STORED
key存在時,成功;不存在時,失敗。
set kk 1 0 4 #回車
1234 #回車
STORED
key不存在時,添加【add】;已存在時,替換【replace】。
get kk
VALUE kk 1 4
1234
多個key時,用空格隔開。
delete kk #回車
DELETED
flush_all
OK
stats
version #顯示版本號
stats reset #清空統計數據
stats slabs #顯示各個slab的信息,包括chunk的大小、數目、使用狀況等
stats items #顯示各個slab中item的數目和存儲時長(最後一次訪問距離如今的秒數)
ctrl+]
tlenet>quit