1、原理和流程php
Memcache是高性能的分佈式的內存緩存系統,通常做爲數據庫的前端cache使用,來減輕數據庫的壓力,提升系統對數據的響應速度;前端
其特徵以下:nginx
(1)協議簡單,基於libevent的事件處理;算法
(2)內置的內存管理方式;使用LRU算法,當數據快佔滿指定的內存空間時,新數據會重用過時數據的內存空間;數據庫
(3)每一個MEMCACHE服務器相對獨立,互不通訊;apache
在系統應用中,其操做流程以下:緩存
(1)當客戶端查詢數據時,先查看memcache是否存在,若是存在,直接把請求的數據返回給客戶端,再也不進行下一步的操做;bash
(2)若是請求的數據不在memcahe中,客戶端就去查詢數據庫,而後把查詢到數據返回給客戶端,同時將數據存放一份副本到mencache中;服務器
(3)每次更新數據庫的同時更新memcache中的數據,保證memcahe中的數據儘可能最新;分佈式
(4)指定的內存使用完畢後,會使用LRU(Least Recently Used)策略,新數據替換失效的數據,而後是最近未被使用的數據;
2、安裝、啓動和關閉
(1)安裝libevent;
wget https://sourceforge.net/projects/levent/files/libevent/libevent-2.0/libevent-2.0.22-stable.tar.gz tar -axvf libevent-2.0.22-stable.tar.gz cd libevent-2.0.22-stable ./configure && make && make install
(2)安裝memcache
wget http://memcached.org/files/memcached-1.4.22.tar.gz tar -axvf memcached-1.4.22.tar.gz cd memcached-1.4.22 ./configure && make && make install
(3)啓動memcache
/usr/local/bin/memcached -u root -m 128 -P /var/run/memcached.pid -d
*關於memcached參數能夠經過「/usr/local/bin/memcached -h」來查看
(4)關閉memcache
kill `cat /var/run/memcached.pid`
3、簡單操做
(1)進入memcache
telnet 127.0.0.1 11211 #telnet進入memcache界面 set test 0 0 10 #存入test this #輸入test的值 STORED #返回存入成功 get test #查詢test的值 VALUE test 0 10 this #返回test的值 END
*相似的命令還有add、replace
(2)查詢memcache的各類統計狀態
stats #查詢memcache的各類統計狀態 stats reset #重置各類狀態統計結果 stats items #顯示slabs中items的數目 stats slabs #顯示slabs信息
4、memcache的監控
利用memcache.php進行監控,下載memcache.php
wget http://pecl.php.net/get/memcache-2.2.7.tgz
將其解壓縮到nginx或者apache的根目錄
修改memcache.php文件中下面的行,可添加多臺memcache監控;
$MEMCACHE_SERVERS[] = 'mymemcache-server:11211';