memcached使用內存保存session

對於登陸註冊量比較大的網站,session直接寫入文件。對於登陸訪問量比較大的網站session本身就比較多,如果提高session的讀取速度可以提高訪問速度和減輕服務器一定的負擔。而memcached可以做到這一點。修改的主要有兩個參數:session.save_handler爲memcache和session.save_path爲tcp://ip:port

方式一:修改php.ini的配置文件

方式二:通過ini_set()函數設置對本頁面有效的session配置ini_set(“session.save_handler”,“memcache”)ini_set("session.save_path","tcp://ip:port")

memcached和session的區別:

在讀寫速度上會比文件快很多,而且在多個服務器需要共用  session  時會比較方便,將 這些服務器都配置成使用同一組  memcached  服務器就可以,減少了額外的工作量。  其缺點是  session  數據都保存在  memory  中,一旦當機,數據將會丟失。但對  session  數據來 說並不是嚴重的問題,其本身就是臨時性數據。 session 數據都保存在 memory 中,持久化方面有所欠缺,但對 session 數據來說也不是很大的問題。

當把memcached服務器放在公網上,就不安全了,可以放置在局域網中,通過防火牆拒絕對memcached服務的端口的直接請求,必須通過Apache服務器間接地訪問memcached的服務。
當然需要注意的地方有::

1、memcache的內存應該足夠大,這樣不會出現用戶session從Cache中被清除的問題(可以關閉memcached的對象退出機制)。
2、如果session的讀取比寫入要多很多,可以在memcache前再加一個Oscache等本地緩存,減少對memcache的讀操作,從而減小網絡開銷,提高性能。
3、如果用戶非常多,可以使用memcached組,通過set方法中帶hashCode,插入到某個memcached服務器//暫時不能理解

對於session的清除有幾種方案:

(1)可以在凌晨人最少的時候,對memcached做一次清空。(簡單)

(2)保存在緩存中的對象設置一個失效時間,通過過濾器獲取sessionId的值,定期刷新memcached中的對象.長時間沒有被刷新的對象自動被清除.(相對複雜,消耗資源)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章