memcache

 

 

Memcached是一個高性能分佈式內存對象緩存系統,目前全世界很多人使用這個緩存項目來構建本身大負載的網站,來分擔數據庫的壓力,經過在內存裏維護一個統一的巨大的hash表,它可以用來存儲各類格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存中,而後從內存中讀取,從而大大提升讀取速度。php

1、memecache原理(port:11211)

大訪問量的時候,在咱們使用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數組

 

 

2、mysql與memcache的區別

Msyql是將數據存儲在磁盤中緩存

memcache是存儲在內存中,一旦斷點或者重啓將會致使數據丟失安全

msyql中數據是以二維表的形式存在的服務器

memcache是以鍵值對的形式存儲在數據庫中

3、telnet操做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

4、生存週期的設置

一、經過時間戳的形式 time()+lifetime  單位:秒

Add  name  0  time()+3600*24*7  length

二、經過指定生命週期的形式:lifetime

Add  name  0  3600*24*7  length

 

5、memcache對php數據類型的支持

memcache對於數據的存儲都是以字符串的形式進行存儲,不管是標量類型仍是非標量,對於數組、對象、null等都是先將其序列化之後再存儲,咱們對其調用時的反序列化都是在memcache中進行的,而資源類型是沒法存儲到數據庫的故將資源型轉化爲0字符

 

 

7、什麼是序列化

         在保存數據的時候,不但保存數據的自己,還保存着數據的類型

         a、利於在網絡間進行數據傳輸

         b、便於從新讀取並回複數據

 

6、memcache與頁面靜態化的比較

7、memcache分佈式服務器的配置

  在同一臺服務器上,能夠經過不一樣的端口來實現虛擬的多態服務器的配置

  注意:在添加數據的時候,連接服務器的順序和數量要和獲取數據時的一致

 

8、memcache的安全機制

  一、memcache自己並無安全機制,只有經過服務器系統層面來設置安全性,如防火牆,selinux;一般memcache是放到私有網絡(公司內網),並不會對外公開

  二、memcache –p 11211  –l  127.0.0.1

監聽的ip地址,只接收該IP所傳送的值

9、垃圾回收

  一、惰性刪除:memcache內部並無監視記錄是否過時,而是在get時查看記錄的時間戳,檢查記錄是否過時

二、最少最近原則(LRU):設置的memcache的存儲空間爲64M,當空間滿了,若是再存儲數據時,會自動剔除最不活躍的數據

10、哪些數據適合存儲爲memcache

         ①安全性較差的數據,就算從內存中丟失也沒有關係

         ②查詢比較頻繁的公有字段

         ③數據量不要太大,小於1M

         ④更新比較頻繁的字段(如用戶的狀態)

十一、session放入memcache中

經過php.ini來進行設置session放入memcache中設置以下:

session.save_handler = memcache

session.save_port = ‘localhost:port’

將session_id做爲key值存入memcache中

相關文章
相關標籤/搜索