Memcached是一個分布式的記憶體對象緩衝系統,通常用於動態Web應用以減輕資料庫負載。
Memcached是基於一個儲存鍵對的hashmap,當表格滿了以後,就使用LRU(最近最小使用)演算法機制替換掉。
Memcached使用了libevent來均衡任何數量的開啟連結,使用非阻塞的網路I/O,對內部對象實現引用計數(因此,針對多樣的用戶端,對象可以處在多樣的狀態), 使用自己的頁塊分配器和雜湊表,因此虛擬記憶體不會產生片段並且虛擬記憶體分配的時間複雜度可以保證為O(1).
下面具體說明在CentOS環境下安裝memcached並結合mysql,php來測試Memcache的緩衝機制
1、安裝memcached
wget http://skadns.googlecode.com/files/libevent-1.4.8-stable.tar.gz
wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz
tar xf libevent-1.4.8-stable.tar.gz
cd libevent-1.4.8-stable
./configure
make && make install
ln -sv /usr/local/lib/libevent* /usr/lib/
tar xf memcached-1.4.15.tar.gz
cd memcached-1.4.15
./configure
make && make install
嘗試啟動memcached,啟動方法
[root@www ~]#memcached -d -unobody -m50 -p11211 -P /tmp/memcached.pid
說明:
-d 以獨立方式運行
-u 以什麼使用者啟動
-m 佔用記憶體大小(預設是100)
-p 監聽連接埠號碼
-P 指定pid位置
不報資訊就ok,netstat -tnlp查看一下
2、為php安裝memcached擴充(我是用的是php5.4.4)
[root@www ~]#wget http://pecl.php.net/get/memcache-2.2.5.tgz
[root@www ~]#tar zxvf memcache-2.2.5.tgz
[root@www ~]#cd memcache-2.2.5/
[root@www ~]#/usr/local/php/bin/phpize
[root@www ~]#./configure --with-php-config=/usr/local/php/bin/php-config
[root@www ~]#make
[root@www ~]#make install
在設定檔中添加memcache擴充,命令如下
sed -i 's#extension_dir = "./"#extension_dir = "/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20100525/"\nextension = "memcache.so"#' /usr/local/php/etc/php.ini