memcache/redis

memcache是一套分佈式的高速緩存系統,目前被許多網站使用以提升網站的訪問速度,尤其對於一些大型的、需要頻繁訪問數據庫的網站訪問速度提升效果十分顯著。
MemCache的工作流程如下:
先檢查客戶端的請求數據是否在memcached中,如有,直接把請求數據返回,不再對數據庫進行任何操作;
如果請求的數據不在memcached中,就去查數據庫,把從數據庫中獲取的數據返回給客戶端,同時把數據緩存一份到memcached中(memcached客戶端不負責,需要程序明確實現);
每次更新數據庫的同時更新memcached中的數據,保證一致性;
當分配給memcached內存空間用完之後,會使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,失效數據首先被替換,然後再替換掉最近未使用的數據。
Memcache是一個高性能的分佈式的內存對象緩存系統,通過在內存裏維護一個統一的巨大的hash表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。
memcache示例:

<?php 
//連接memcache 
$m = new Memcache(); 
$m->connect('localhost', 11211); 
$sql = 'SELECT * FROM users'; 
$key = md5($sql); //md5 SQL命令 作爲 memcache的唯一標識符 
$rows = $m->get($key); //先重memcache獲取數據 
if (!$rows) { 
    //如果$rows爲false那麼就是沒有數據咯, 那麼就寫入數據 
    $res = mysql_query($sql); 
    $rows = array(); 
    while ($row = mysql_fetch_array($res)) { 
    $rows[] = $row; 
} 
$m->add($key, $rows); 
//這裏寫入重數據庫中獲取的數據, 可以設置緩存時間, 具體時間設置多少, 根據自己需求吧. 
} 
var_dump($rows); //打印出數據 
//上面第一次運行程序時, 因爲還沒有緩存數據, 所以會讀取一次數據庫, 當再次訪問程序時, 就直接重memcache獲取了. 
?> 

Redis

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。
redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,爲了保證效率,數據都是緩存在內存中。區別的是redis會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,並且在此基礎上實現了master-slave(主從)同步。

發佈了16 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章