Memcached安装以及PHP的调用
一:安裝libevent
由于memcached安裝時(shí),需要使用libevent類庫(kù),所以先安裝libevent
1.下載
#wget?? http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
?
2.解壓縮
#tar xzfv? libevent-2.0.12-stable.tar.gz
?
3.進(jìn)入目錄
#cd libevent-2.0.12-stable
?
4. 編譯,安裝
#?./configure
#?make
#?make install
?注:默認(rèn)安裝到/usr/local/lib/目錄
二:安裝Memcached
http://memcached.org/?是Memcached的官方網(wǎng)站
1.下載
# wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
?
2.解壓縮
#tar xzfv? memcached-1.4.5.tar.gz?
?
3.進(jìn)入目錄
#cd memcached-1.4.5?
?
4. 編譯,安裝
./configure --prefix=/local/memcached
make
make install
安裝完成后,會(huì)在 /local/memcached 出現(xiàn) bin和share目錄
進(jìn)行 bin目錄,啟動(dòng) memcache
方法如下:
./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
此時(shí),會(huì)報(bào)一個(gè)異常
?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類庫(kù),解決辦法如下:
使用LD_DEBUG=help ./memcached -v來確定 加載的類庫(kù)路徑,方法如下:
LD_DEBUG=libs ./memcached -v 2>&1 > /dev/null | less
出現(xiàn)(END)可以直接輸入p退出
#ln -s /usr/local/lib/libevent-2.0.so.5 /lib/libevent-2.0.so.5
現(xiàn)在可以正常啟動(dòng)memcached了
./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
到這里,看到memcached已經(jīng)啟動(dòng),說明安裝成功。
三:安裝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
本機(jī)是/usr/bin/phpize
# /usr/bin/phpize
# ./configure --with-php-config=/usr/bin/php-config
# make
# make install
php.ini在/etc下
extension=memcache.so
重啟httpd
#service httpd restart
php里使用phpinfo()看到如下信息說明memcached擴(kuò)展才算安裝好!
四:PHP調(diào)用memcached 自己寫一個(gè)PHP程序測(cè)試一下
<?php
$memcache = new Memcache; //創(chuàng)建一個(gè)memcache對(duì)象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //連接Memcached服務(wù)器
$memcache->set('key', 'test'); //設(shè)置一個(gè)變量到內(nèi)存中,名稱是key 值是test
$get_value = $memcache->get('key'); //從內(nèi)存中取出key的值
echo $get_value;
?>
常用操作<?php
//連接Memcache
$mem = new Memcache;
$mem->connect("localhost", 11211);
//保存數(shù)據(jù)
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";
//替換數(shù)據(jù)
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//保存數(shù)組數(shù)據(jù)
$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>";
//刪除數(shù)據(jù)
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//清除所有數(shù)據(jù)
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//關(guān)閉連接
$mem->close();
?>
在一臺(tái)或者多臺(tái)機(jī)器啟用一個(gè)或者多個(gè)進(jìn)程,這里是在一臺(tái)機(jī)器啟
用兩個(gè)進(jìn)程,使用兩個(gè)端口:
#./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
//連接Memcache
$mem = new Memcache;
$mem->addServer("localhost", 11211);
$mem->addServer("localhost", 11212);
//保存數(shù)據(jù)
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";
//保存數(shù)組數(shù)據(jù)
$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>";
//刪除數(shù)據(jù)
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//關(guān)閉連接
$mem->close();
?>
五:Memcached一些特性和限制 ? 在 Memcached 中可以保存的item數(shù)據(jù)量是沒有限制的,只有內(nèi)存足夠
? Memcached單進(jìn)程最大使用內(nèi)存為2G,要使用更多內(nèi)存,可以分多個(gè)端口開啟多個(gè)Memcached進(jìn)程
? 最大30天的數(shù)據(jù)過期時(shí)間, 設(shè)置為永久的也會(huì)在這個(gè)時(shí)間過期,常量REALTIME_MAXDELTA
60*60*24*30 控制
? 最大鍵長(zhǎng)為250字節(jié),大于該長(zhǎng)度無法存儲(chǔ),常量KEY_MAX_LENGTH 250 控制
? 單個(gè)item最大數(shù)據(jù)是1MB,超過1MB數(shù)據(jù)不予存儲(chǔ),常量POWER_BLOCK 1048576 進(jìn)行控制,
它是默認(rèn)的slab大小
? 最大同時(shí)連接數(shù)是200,通過 conn_init()中的freetotal 進(jìn)行控制,最大軟連接數(shù)是1024,通過
settings.maxconns=1024 進(jìn)行控制
? 跟空間占用相關(guān)的參數(shù):settings.factor=1.25, settings.chunk_size=48, 影響slab的數(shù)據(jù)占用和步進(jìn)方式 查看Memcached內(nèi)部工作狀態(tài)
訪問Memcached:telnet 主機(jī)名 端口號(hào)
查看總狀態(tài):stats
查看某項(xiàng)狀態(tài):stats curr_connections
禁止LRU
有些情況下LRU機(jī)制反倒會(huì)造成麻煩。memcached啟動(dòng)時(shí)通過“-M”參數(shù)可以禁止LRU,
如下所示:
$ memcached -M -m 1024
啟動(dòng)時(shí)必須注意的是,小寫的“-m”選項(xiàng)是用來指定最大內(nèi)存大小的。不指定具體數(shù)值則
使用默認(rèn)值64MB。
指定“-M”參數(shù)啟動(dòng)后,內(nèi)存用盡時(shí)memcached會(huì)返回錯(cuò)誤。話說回來,memcached畢
竟不是存儲(chǔ)器,而是緩存,所以推薦使用LRU。 Memcached使用線程模式工作
在安裝的時(shí)候必須打開:./configure --enable-threads
安裝完之后,啟動(dòng)的時(shí)候看看幫助信息有沒有這條:
-t <num> number of threads to use, default 4
如果存在該選項(xiàng),說明已經(jīng)支持了線程,就可以在啟動(dòng)的時(shí)候使用 -t 選項(xiàng)來啟動(dòng)多線程
然后啟動(dòng)的時(shí)候必須加上你需要支持的線程數(shù)量:
/usr/local/memcache/bin/memcached -t 1024 /
網(wǎng)上流行的PHP安裝Memcached第二種方法安裝和配置
需要把對(duì)應(yīng)版本改為最新即可
1、安裝Memcached
# tar vxzf memcached-1.1.12.tar.gz
# cd memcached-1.1.12 # ./configure --prefix=/usr/local/memcached
# make
# make install 安裝完之后要啟動(dòng)服務(wù)
# cd /usr/local/memcached/bin
# ./memcached -d -m 50 -p 11211 -u root 參數(shù)說明 -m 指定使用多少兆的緩存空間;-p 指定要監(jiān)聽的端口; -u 指定以哪個(gè)用戶來運(yùn)行
2、安裝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 安裝完后會(huì)有類似這樣的提示:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/ 把這個(gè)記住,然后修改php.ini,把
extension_dir = "./" 修改為
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/" 并添加一行
extension=memcache.so
總結(jié)
以上是生活随笔為你收集整理的Memcached安装以及PHP的调用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信带马字的网名大全
- 下一篇: 图片服务器的url hash架构