Memcached基礎
memcached中的一些參數限制
Key的長度:250字節(二進制協議支持65536個字節)
Value的限制:1M,一般都是存儲一些文本,如新聞列表等等這個值足夠了
內存的限制:32位下最大設置到2G
如果有30G數據要緩存,一般也不會單實例裝30G(不要把雞蛋裝在一個籃子裏)
一般建議 開啓多個實例(可以在不同的機器,或者同機器不同端口多開幾個)
增:add往內存增加一行新記錄
語法:add key flag expire length
- Key 給值起一個獨特的名字
- Flag 標誌,要求爲一個正整數
- Expire 有效期
- Length 緩存的長度(字節爲單位)
Flag的意義:
Memcached基本文本協議,傳輸的東西,理解成字符串來存儲
想讓你存一個Php對象和一個Php數組怎麼辦?
答:序列化成字符串,往出取的時候,自然還要反序列成對象/數組/json格式等等
這時候flag的意義就體現出來了
比如:1、就是字符串 2、反轉成數組 3、反序列化對象...
Expire的意義:
設置緩存的有效期有3種格式
1、設置秒數,從設定開始數,第N秒後失效
2、時間戳,到指定的時間戳後失效
比如在團購網站緩存的某團到中午12:00失效
3、設爲0,不自動失效
但是設置爲0不是永久有效的,編譯memcached時,指定一個最長常量默認是30天,所以,即使設爲0,30天后也會失效
可能等不到30天,就會被新數據擠出去
Replace替換
Replace key flag expire length
參數和add完全一樣,不單獨寫
Delete刪除
Delete key
Delete key [time seconds]
加秒數之後,是指,被刪除的key,N秒內不能再用,目的是讓網站上的頁面緩存也代謝完畢
Get查詢
get key
返回key的值
Set是設置和修改值
參數和add,replace一樣,但功能不一樣
add 是在Key不存在時,才能建立此鍵值
對於已經存在的鍵,可以用replace進行替換/更改
replace則只能對於已經存在的鍵做修改,不存在則不成功
set相當於add replace兩者功能
Incr增長
incr age 1
年齡這個鍵的值增長1
Decr減少
decr age 2
年齡這個鍵的值減少2
應用場景
秒殺功能:
一個人下單,要牽涉數據庫讀取,寫入訂單,更改庫存,及事務要求,對於傳統型數據庫來說。壓力是巨大的
可以利用memcached的decr功能,在內存存儲count庫存量,秒殺1000臺
set count 0 0 3
1000
decr count 1
最後到了0,就不能搶了
每個人搶單主要在內存操作,速度非常快
搶到count小於等於1000號的人,得到訂單號,再去另外一個頁面進行支付
stats
統計所有信息
flush_all
清空所有存儲的對象
(惰性刪除)