上篇在學習$mem->set();的時候少寫了一個參數,第三個參數,MEMCACHE_COMPRESSED,這個參數的做用在於壓縮。php
memcache是獨立機構,是C/S結構。若是memcache滿了,LRU算法刪除,把最先沒有訪問過的拿掉。前端
memcache的分佈式 這裏是重點算法
在第二部中將connect這個方法改爲addserver(),在連接池中添加了一個memcache服務器。apache
例如 :緩存
$mem -> new Memcache(); $mem -> addServer('127.0.0.1',11211); //增長連接池 $mem -> addServer('127.0.0.1',9999); //增長連接池 $mem -> get($key);
memcached儘管是‘分佈式’緩存服務器,但服務器端並無分佈式功能。安全
各個memcache不會互相通訊以便信息共享。每一個memcache服務的數據不是同步的。服務器
並且把什麼樣的數據放入到哪個memcached是由客戶端的mem對象來決定的。session
當執行addServer的時候,並非當即去鏈接mem服務,而是經過計算,hash後纔去決定連接哪一臺mem服務,因此當大量加入服務到鏈接池,不會有多餘的開銷。tcp
memcache細節的研究分佈式
生命週期。從放入開始計時,時間到就自動銷燬。memcache被銷燬有如下幾種狀況。一,時間到。2、重啓memcache。三,重啓服務器。
如何將session放入到memcache中保存
修改php.ini配置文件
session.save_handler=user 它有三個選項 user 表示自定義 files入庫保存到文件 memcache保存在內存
修改以下 將session.save_handler 改成 memcache
將 session.save_path=「tcp://127.0.0.1:11211」
2. 重啓apache
注意:若是session數據存入memcache,那它必定是以session_id爲key值進行添加的。
若是之後作大型門戶網站,必定要把session寫入到memcache。(強烈建議)
若是沒法修改php.ini文件,能夠經過函數修改php.ini任何配置。能夠把如下兩句寫到腳本的前端
ini_set("session.sava_handler","memcache"); //函數的參數都是以減值對的形式存入 ini_set("session.save_path","tcp://127.0.0.1:9999");
safe_mode模式的談論
他們的最大區別就在於,安全模式一旦打開,對服務器上文件的操做幾乎失效。
ini_set()只會在很腳本起做用,不對其餘文件起做用。