memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论
附:請淺談memcached的機制
答: ①基于C/S架構,協議比較簡單
c/s架構,此時memcached為服務器端,我們可以使用如PHP,c++/c等程序連接memcached服務器。
memcached的服務器客戶端通信并不使用XML等格式,而使用簡單的基于文本行的協議,因此通過telnet也能在memcached上保存、讀取數據。
②基于libevent事件來處理的
libevent是一套垮平臺的事件處理接口的封裝,能夠處理兼容包括這些操作系統:
windows/Linux/BSD/Solaris等操作系統的事件處理
memcached使用libevent來進行網絡并發連接處理,能夠保持在很大的并發情況下,仍舊可以保持快速的響應能力!
③內置內存存儲方式
為了提高性能,memcached中保存的數據都存儲在memcached內置的內存存儲空間中,由于數據僅存在于內存中,因此重啟memcached,重啟操作系統會導致全部的數據消失,另外內存容量達到指定值之后,就基于LRU(least recently used)算法自動刪除不使用的緩存。memcached本身是為緩存設計的服務器,因此并沒有過多考慮數據的永久性問題。
④基于客戶端分布式
memcached盡管是“分布式”緩存服務器,但服務器端并沒有分布式功能。各個memcached不會互相通信以共享信息,那么,怎樣進行分布式呢?這完全取決于客戶端的實現。
memcached1 memcached2 ? memcached3
分布式算法
客戶端程序庫
PHP應用程序
?
PHP應用程序要管理三個memcached服務器,客戶端進行操作,然后數據保存在經過memcached分布式算法的memcached服務器中一個上。
?
memcached細節討論:
1、生命周期
①Apache關閉后
②Apache沒關閉,但是緩存時間到
③memcached服務關閉
2、memcached數據存在什么地方
存放于memcached所在機器的這個內存中
3、memcached最佳實踐
①將從數據庫查詢的數據存放在memcached中
<?php
$user_id = (int)$_GET['user_id'];
//判斷memcached中是否存在user_id
$mc = new Memcache();
if ($user = $mc -> get('user_id')) {
//找到,直接取出值
dump($user);
} else {
//未找到查詢數據庫
ob_start();
$user = //查詢數據庫操作,得到數據
//緩存起來,壓縮,保存24小時
$mc -> set($user_id, $user, MEMCACHED_COMPRESSED, 3600*24);
//分配到模板中
$this->assign('user', $user);
ob_end_flush();
}
?
②將session數據存放在memcached中
默認情況下,session數據是存在服務器中的文件上的。
完成以下配置,直接搞定:
①保證memcache擴展開啟,memcached運行
②設置php.ini中session.save_handler = memcache
③設置php.ini中session.save_path = tcp://localhost:11211
④也可以通過php函數ini_set()函數進行頁面中的設置。
小結:
我們只需要在php.ini中進行以上配置,那么session將不會按照文件的格式存儲在服務器上,而是存儲在memcached服務器內存中。調用的時 候依然按照原來session文件存儲格式方式調用即可: 即, $user_id = $_SESSION['user_id'];
③memcached的數據是無用戶狀態的,不會和某個用戶綁定。
④memcached訪問安全性
windows下
設置防火墻:打開防火墻并設置例外
?
Linux下
iptables -a input -p 協議 -s 可以訪問ip -dport 端口 -j ACCEPT
4、
什么樣的數據適合放Memcached中?
變化頻繁,據有不穩定性的數據,不需要實時入庫(比如用戶在線狀態,在線人數)
門戶網站的新聞等,覺得頁面靜態化仍不能滿足要求
什么樣的數據不適合放Memcached中?
銀行股票證券系統時時變化
數據量過大,比如優酷網的視頻
總結:
如果是一個小網站,PV值不大,就不考慮使用memcached
變化頻繁,查詢頻繁,但是不一定寫入數據庫(適合memcached)(用戶在線狀態,用戶在線人數)
變化頻繁一變化就要入庫的,比如股票,金融(不適合memcached)
變化不頻繁,查詢很頻繁,不管入不入庫都比較適合memcached(新浪的新聞頻道)
轉載于:https://www.cnblogs.com/Zell-Dinch/p/3901590.html
總結
以上是生活随笔為你收集整理的memcached学习笔记6--浅谈memcached的机制 以及 memcached细节讨论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【编程题目】输入一个已经按升序排序过的数
- 下一篇: cocos2dx scrollview和