一:安裝libeventphp
因爲memcached安裝時,須要使用libevent類庫,因此先安裝libevent數組
1.下載緩存
#wget http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz服務器
2.解壓縮多線程
#tar xzfv libevent-2.0.12-stable.tar.gzless
3.進入目錄memcached
#cd libevent-2.0.12-stable測試
4. 編譯,安裝
# ./configure
# make
# make install
注:默認安裝到/usr/local/lib/目錄
大數據
二:安裝Memcached網站
http://memcached.org/ 是Memcached的官方網站
1.下載
# wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
2.解壓縮
#tar xzfv memcached-1.4.5.tar.gz
3.進入目錄
#cd memcached-1.4.5
4. 編譯,安裝
./configure --prefix=/local/memcached
make
make install
安裝完成後,會在 /local/memcached 出現 bin和share目錄
進行 bin目錄,啓動 memcache
方法以下:
./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
此時,會報一個異常
error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
緣由是找不到libevent-2.0.so.5類庫,解決辦法以下:
使用LD_DEBUG=help ./memcached -v來肯定 加載的類庫路徑,方法以下:
LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less
出現(END)能夠直接輸入p退出
#ln -s /usr/local/lib/libevent-2.0.so.5 /lib/libevent-2.0.so.5
如今能夠正常啓動memcached了
./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
到這裏,看到memcached已經啓動,說明安裝成功。
三:安裝memcache PHP模塊
#wget http://pecl.php.net/get/memcache-2.2.4.tgz
# tar zxvf memcache-2.2.4.tgz
# cd memcache-2.2.4
找phpize
#whereis phpize
本機是/usr/bin/phpize
# /usr/bin/phpize
# ./configure --with-php-config=/usr/bin/php-config
# make
# make install
在php.ini文件添加一行
php.ini在/etc下
extension=memcache.so
重啓httpd
#service httpd restart
php裏使用phpinfo()看到以下信息說明memcached擴展才算安裝好!
四:PHP調用memcached
本身寫一個PHP程序測試一下
[php] view plaincopy
<?php
$memcache = new Memcache; //建立一個memcache對象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //鏈接Memcached服務器
$memcache->set('key', 'test'); //設置一個變量到內存中,名稱是key 值是test
$get_value = $memcache->get('key'); //從內存中取出key的值
echo $get_value;
?>
經常使用操做
[php] view plaincopy
<?php
//鏈接Memcache
$mem = new Memcache;
$mem->connect("localhost", 11211);
//保存數據
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";
//替換數據
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//保存數組數據
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//刪除數據
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//清除全部數據
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//關閉鏈接
$mem->close();
?>
在一臺或者多臺機器啓用一個或者多個進程,這裏是在一臺機器啓
用兩個進程,使用兩個端口:
#./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
#./memcached -d -u nobody -m 512 127.0.0.1 -p 11212
[php] view plaincopy
<?php
//鏈接Memcache
$mem = new Memcache;
$mem->addServer("localhost", 11211);
$mem->addServer("localhost", 11212);
//保存數據
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";
//保存數組數據
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//刪除數據
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//關閉鏈接
$mem->close();
?>
五:Memcached一些特性和限制
• 在 Memcached 中能夠保存的item數據量是沒有限制的,只有內存足夠
• Memcached單進程最大使用內存爲2G,要使用更多內存,能夠分多個端口開啓多個Memcached進程
• 最大30天的數據過時時間, 設置爲永久的也會在這個時間過時,常量REALTIME_MAXDELTA
60*60*24*30 控制
• 最大鍵長爲250字節,大於該長度沒法存儲,常量KEY_MAX_LENGTH 250 控制
• 單個item最大數據是1MB,超過1MB數據不予存儲,常量POWER_BLOCK 1048576 進行控制,
它是默認的slab大小
• 最大同時鏈接數是200,經過 conn_init()中的freetotal 進行控制,最大軟鏈接數是1024,經過
settings.maxconns=1024 進行控制
• 跟空間佔用相關的參數:settings.factor=1.25, settings.chunk_size=48, 影響slab的數據佔用和步進方式
查看Memcached內部工做狀態
訪問Memcached:telnet 主機名 端口號
查看總狀態:stats
查看某項狀態:stats curr_connections
禁止LRU
有些狀況下LRU機制反倒會形成麻煩。memcached啓動時經過「-M」參數能夠禁止LRU,
以下所示:
$ memcached -M -m 1024
啓動時必須注意的是,小寫的「-m」選項是用來指定最大內存大小的。不指定具體數值則
使用默認值64MB。
指定「-M」參數啓動後,內存用盡時memcached會返回錯誤。話說回來,memcached畢
竟不是存儲器,而是緩存,因此推薦使用LRU。
Memcached使用線程模式工做
在安裝的時候必須打開:./configure --enable-threads
安裝完以後,啓動的時候看看幫助信息有沒有這條:
-t <num> number of threads to use, default 4
若是存在該選項,說明已經支持了線程,就能夠在啓動的時候使用 -t 選項來啓動多線程
而後啓動的時候必須加上你須要支持的線程數量:
/usr/local/memcache/bin/memcached -t 1024
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
網上流行的PHP安裝Memcached第二種方法安裝和配置
須要把對應版本改成最新便可
一、安裝Memcached
# tar vxzf memcached-1.1.12.tar.gz
# cd memcached-1.1.12
# ./configure --prefix=/usr/local/memcached
# make
# make install
安裝完以後要啓動服務
# cd /usr/local/memcached/bin
# ./memcached -d -m 50 -p 11211 -u root
參數說明 -m 指定使用多少兆的緩存空間;-p 指定要監聽的端口; -u 指定以哪一個用戶來運行
二、安裝memcache PHP模塊
# tar vxzf memcache-1.5.tgz
# cd memcache-1.5
# /usr/local/php/bin/phpize
//注意下面不同
# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
# make
# make install
安裝完後會有相似這樣的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/
把這個記住,而後修改php.ini,把
extension_dir = "./"
修改成
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/"
並添加一行
extension=memcache.so