Memcached是一個高性能的分佈式的內存對象緩存系統,目前全世界很多人使用這個緩存項目來構建本身大負載的網站,來分擔數據庫的壓力,經過在內存裏維護一個統一的巨大的hash表,它可以用來存儲各類格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,而後從內存中讀取,從而大大提升讀取速度。php
大訪問量的時候,在咱們使用memcache的時,用戶第一次請求的時候,服務器會從數據庫中讀取數據,並將數據緩存到memcache中,其餘用戶再次請求的時就會從memcache中讀取數據,而再也不連接數據庫。mysql
在windows下啓動時的指令:linux
-p 監聽的端口
-l 鏈接的IP地址, 默認是本機
-d start 啓動memcached服務
-d restart 重起memcached服務
-d stop|shutdown 關閉正在運行的memcached服務
-d install 安裝memcached服務
-d uninstall 卸載memcached服務sql
-m 最大內存使用,單位MB。默認64MB數據庫
例:memcache –p 11211windows
經過telnet 來進行模擬操做數據:telnet localhost 11211數組
Msyql是將數據存儲在磁盤中緩存
memcache是存儲在內存中,一旦斷點或者重啓將會致使數據丟失安全
msyql中數據是以二維表的形式存在的服務器
memcache是以鍵值對的形式存儲在數據庫中
一、添加數據:add key(鍵名) 0(是否壓縮) 120(lifetime) 5(值的長度)
在telnet中語句寫錯後不能修改,值的長度與輸入的長度必須一致不能多也不能少
二、獲取數據:get key
三、修改數據:replace key 0 lifetime length
注:當字段已經存在的時候將會替換,若是不存在則替換失敗
四、設置數據:set key 0 lifetime length
注:當字段已經存在則進行替換,不存在則進行設置
五、刪除數據:delete key
六、後追加數據:append key lifetime length
七、前追加數據:prepend key lifetime length
八、加法操做:incr key value
九、減法操做:decr key value
十、刪除全部:flush all
十一、查看狀態:stats //查看命中率(命中率越高,越有不然須要調內存) get_hits/cmd_get
一、經過時間戳的形式 time()+lifetime 單位:秒
Add name 0 time()+3600*24*7 length
二、經過指定生命週期的形式:lifetime
Add name 0 3600*24*7 length
memcache對於數據的存儲都是以字符串的形式進行存儲,不管是標量類型仍是非標量,對於數組、對象、null等都是先將其序列化之後再存儲,咱們對其調用時的反序列化都是在memcache中進行的,而資源類型是沒法存儲到數據庫的故將資源型轉化爲0字符
在保存數據的時候,不但保存數據的自己,還保存着數據的類型
a、利於在網絡間進行數據傳輸
b、便於從新讀取並回複數據
在同一臺服務器上,能夠經過不一樣的端口來實現虛擬的多態服務器的配置
注意:在添加數據的時候,連接服務器的順序和數量要和獲取數據時的一致
一、memcache自己並無安全機制,只有經過服務器系統層面來設置安全性,如防火牆,selinux;一般memcache是放到私有網絡(公司內網),並不會對外公開
二、memcache –p 11211 –l 127.0.0.1
監聽的ip地址,只接收該IP所傳送的值
一、惰性刪除:memcache內部並無監視記錄是否過時,而是在get時查看記錄的時間戳,檢查記錄是否過時
二、最少最近原則(LRU):設置的memcache的存儲空間爲64M,當空間滿了,若是再存儲數據時,會自動剔除最不活躍的數據
①安全性較差的數據,就算從內存中丟失也沒有關係
②查詢比較頻繁的公有字段
③數據量不要太大,小於1M
④更新比較頻繁的字段(如用戶的狀態)
經過php.ini來進行設置session放入memcache中設置以下:
session.save_handler = memcache
session.save_port = ‘localhost:port’
將session_id做爲key值存入memcache中