php的memcached客戶端memcached
更新時間:2011年06月14日 22:48:14 作者:
之前在安裝memcache時有提到memcached客戶端是叫memcache,其實還有一個基于libmemcached的客戶端叫memcached,據(jù)說性能更好,功能也更多。
memcache的官方主頁:http://pecl.php.net/package/memcache
memcached的官方主頁:http://pecl.php.net/package/memcached
以下是我安裝Memcached版本的PHP模塊的過程記錄:
wget http://download.tangent.org/libmemcached-0.48.tar.gz
tar zxf libmemcached-0.48.tar.gz
cd libmemcached-0.48
./configure --prefix=/usr/local/libmemcached --with-memcached
make
make install
wget http://pecl.php.net/get/memcached-1.0.2.tgz
tar zxf memcached-1.0.2.tgz
cd memcached-1.0.2
/usr/local/webserver/php/bin/phpize
./configure --enable-memcached --with-php-config=/usr/local/webserver/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
make
make install
在php.ini中加入
extension=memcached.so
完成
另:
在安裝libmemcached時,如果只用./configure,可能會提示:
checking for memcached… no
configure: error: “could not find memcached binary”
兩者使用起來幾乎一模一樣。
$mem = new Memcache;
$mem->addServer($memcachehost, '11211');
$mem->addServer($memcachehost, '11212');
$mem->set('hx','9enjoy');
echo $mem->get('hx');
$md = new Memcached;
$servers = array(
array($memcachehost, '11211'),
array($memcachehost, '11212')
);
$md->addServers($servers);
$md->set('hx','9enjoy');
echo $md->get('hx');
memcached的方法比memcache多不少,比如getMulti,getByKey,addServers等。
memcached沒有memcache的connect方法,目前也還不支持長連接。
memcached 支持 Binary Protocol,而 memcache 不支持,意味著 memcached 會有更高的性能。
Memcache是原生實現(xiàn)的,支持OO和非OO兩套接口并存,memcached是使用libmemcached,只支持OO接口。
更詳細的區(qū)別:http://code.google.com/p/memcached/wiki/PHPClientComparison
memcached服務(wù)端是集中式的緩存系統(tǒng),分布式實現(xiàn)方法是由客戶端決定的。
memcached的分布算法一般有兩種選擇:
1、根據(jù)hash(key)的結(jié)果,模連接數(shù)的余數(shù)決定存儲到哪個節(jié)點,也就是hash(key)% sessions.size(),這個算法簡單快速,表現(xiàn)良好。然而這個算法有個缺點,就是在memcached節(jié)點增加或者刪除的時候,原有的緩存數(shù)據(jù)將大規(guī)模失效,命中率大受影響,如果節(jié)點數(shù)多,緩存數(shù)據(jù)多,重建緩存的代價太高,因此有了第二個算法。
2、Consistent Hashing,一致性哈希算法,他的查找節(jié)點過程如下:
首先求出memcached服務(wù)器(節(jié)點)的哈希值,并將其配置到0~232的圓(continuum)上。然后用同樣的方法求出存儲數(shù)據(jù)的鍵的哈希值,并映射到圓上。然后從數(shù)據(jù)映射到的位置開始順時針查找,將數(shù)據(jù)保存到找到的第一個服務(wù)器上。如果超過2的32次方后仍然找不到服務(wù)器,就會保存到第一臺memcached服務(wù)器上。
memcache在沒有任何配置的情況下,是使用第一種方法。memcached要實現(xiàn)第一種方法,似乎是使用(未確認):
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);
第二種一致性哈希算法:
memcache在php.ini中加
Memcache.hash_strategy =consistent
Memcache.hash_function =crc32
memcached在程序中加(未確認)
$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);
或
$mem->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
$mem->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);
一些參考文檔:
memcached分布測試報告(一致性哈希情況下的散列函數(shù)選擇):
http://www.iteye.com/topic/346682
php模塊memcache和memcached區(qū)別: http://www.dhdzp.com/article/27366.htm
PHP模塊:Memcached > Memcache:http://www.dhdzp.com/article/27367.htm
20110509@@UPDATE:
如果安裝libmemcached有如下出錯提示:
make[2]: *** [clients/ms_conn.o] Error 1
make[2]: Leaving directory `/www/soft/libmemcached-0.48'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/www/soft/libmemcached-0.48'
make: *** [all] Error 2
可在configure時增加--disable-64bit CFLAGS="-O3 -march=i686"
即:./configure --prefix=/usr/local/libmemcached --with-memcached --disable-64bit CFLAGS="-O3 -march=i686"
memcached的官方主頁:http://pecl.php.net/package/memcached
以下是我安裝Memcached版本的PHP模塊的過程記錄:
wget http://download.tangent.org/libmemcached-0.48.tar.gz
tar zxf libmemcached-0.48.tar.gz
cd libmemcached-0.48
./configure --prefix=/usr/local/libmemcached --with-memcached
make
make install
wget http://pecl.php.net/get/memcached-1.0.2.tgz
tar zxf memcached-1.0.2.tgz
cd memcached-1.0.2
/usr/local/webserver/php/bin/phpize
./configure --enable-memcached --with-php-config=/usr/local/webserver/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
make
make install
在php.ini中加入
extension=memcached.so
完成
另:
在安裝libmemcached時,如果只用./configure,可能會提示:
checking for memcached… no
configure: error: “could not find memcached binary”
兩者使用起來幾乎一模一樣。
復(fù)制代碼 代碼如下:
$mem = new Memcache;
$mem->addServer($memcachehost, '11211');
$mem->addServer($memcachehost, '11212');
$mem->set('hx','9enjoy');
echo $mem->get('hx');
復(fù)制代碼 代碼如下:
$md = new Memcached;
$servers = array(
array($memcachehost, '11211'),
array($memcachehost, '11212')
);
$md->addServers($servers);
$md->set('hx','9enjoy');
echo $md->get('hx');
memcached的方法比memcache多不少,比如getMulti,getByKey,addServers等。
memcached沒有memcache的connect方法,目前也還不支持長連接。
memcached 支持 Binary Protocol,而 memcache 不支持,意味著 memcached 會有更高的性能。
Memcache是原生實現(xiàn)的,支持OO和非OO兩套接口并存,memcached是使用libmemcached,只支持OO接口。
更詳細的區(qū)別:http://code.google.com/p/memcached/wiki/PHPClientComparison
memcached服務(wù)端是集中式的緩存系統(tǒng),分布式實現(xiàn)方法是由客戶端決定的。
memcached的分布算法一般有兩種選擇:
1、根據(jù)hash(key)的結(jié)果,模連接數(shù)的余數(shù)決定存儲到哪個節(jié)點,也就是hash(key)% sessions.size(),這個算法簡單快速,表現(xiàn)良好。然而這個算法有個缺點,就是在memcached節(jié)點增加或者刪除的時候,原有的緩存數(shù)據(jù)將大規(guī)模失效,命中率大受影響,如果節(jié)點數(shù)多,緩存數(shù)據(jù)多,重建緩存的代價太高,因此有了第二個算法。
2、Consistent Hashing,一致性哈希算法,他的查找節(jié)點過程如下:
首先求出memcached服務(wù)器(節(jié)點)的哈希值,并將其配置到0~232的圓(continuum)上。然后用同樣的方法求出存儲數(shù)據(jù)的鍵的哈希值,并映射到圓上。然后從數(shù)據(jù)映射到的位置開始順時針查找,將數(shù)據(jù)保存到找到的第一個服務(wù)器上。如果超過2的32次方后仍然找不到服務(wù)器,就會保存到第一臺memcached服務(wù)器上。
memcache在沒有任何配置的情況下,是使用第一種方法。memcached要實現(xiàn)第一種方法,似乎是使用(未確認):
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);
第二種一致性哈希算法:
memcache在php.ini中加
復(fù)制代碼 代碼如下:
Memcache.hash_strategy =consistent
Memcache.hash_function =crc32
memcached在程序中加(未確認)
復(fù)制代碼 代碼如下:
$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);
或
$mem->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
$mem->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);
一些參考文檔:
memcached分布測試報告(一致性哈希情況下的散列函數(shù)選擇):
http://www.iteye.com/topic/346682
php模塊memcache和memcached區(qū)別: http://www.dhdzp.com/article/27366.htm
PHP模塊:Memcached > Memcache:http://www.dhdzp.com/article/27367.htm
20110509@@UPDATE:
如果安裝libmemcached有如下出錯提示:
make[2]: *** [clients/ms_conn.o] Error 1
make[2]: Leaving directory `/www/soft/libmemcached-0.48'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/www/soft/libmemcached-0.48'
make: *** [all] Error 2
可在configure時增加--disable-64bit CFLAGS="-O3 -march=i686"
即:./configure --prefix=/usr/local/libmemcached --with-memcached --disable-64bit CFLAGS="-O3 -march=i686"
您可能感興趣的文章:
- php模塊memcache和memcached區(qū)別分析
- PHP Memcached應(yīng)用實現(xiàn)代碼
- php擴展memcached和memcache的安裝配置方法
- PHP 使用memcached簡單示例分享
- PHP MemCached高級緩存配置圖文教程
- PHP MemCached 高級緩存應(yīng)用代碼
- php下Memcached入門實例解析
- php制作文本式留言板
- php實現(xiàn)網(wǎng)站留言板功能
- PHP結(jié)合Mysql數(shù)據(jù)庫實現(xiàn)留言板功能
- 基于thinkPHP框架實現(xiàn)留言板的方法
- php+Memcached實現(xiàn)簡單留言板功能示例
相關(guān)文章
深入掌握include_once與require_once的區(qū)別
要深入掌握include(_once)與require(_once),需要掌握以下幾點內(nèi)容,不過有人建議不建議使用2013-06-06
PHP 多進程與信號中斷實現(xiàn)多任務(wù)常駐內(nèi)存管理實例方法
在本篇文章里小編給大家整理的是關(guān)于PHP 多進程與信號中斷實現(xiàn)多任務(wù)常駐內(nèi)存管理的相關(guān)知識點,有需要的朋友們學(xué)習(xí)下。2019-10-10
PHP實現(xiàn)二維數(shù)組(或多維數(shù)組)轉(zhuǎn)換成一維數(shù)組的常見方法總結(jié)
這篇文章主要介紹了PHP實現(xiàn)二維數(shù)組(或多維數(shù)組)轉(zhuǎn)換成一維數(shù)組的常見方法,結(jié)合實例形式總結(jié)分析了PHP數(shù)組遍歷、轉(zhuǎn)換所涉及的array_reduce、array_walk_recursive及array_map函數(shù)常見使用技巧,需要的朋友可以參考下2019-12-12
WordPress開發(fā)中用于獲取近期文章的PHP函數(shù)使用解析
這篇文章主要介紹了WordPress開發(fā)中用于獲取近期文章的PHP函數(shù)使用解析,即對wp_get_recent_posts函數(shù)的使用方法介紹,需要的朋友可以參考下2016-01-01
PHP提示Deprecated: mysql_connect(): The mysql extension is dep
這篇文章主要介紹了PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解決方法,是在進行PHP數(shù)據(jù)庫程序開發(fā)中常會遇到的錯誤,需要的朋友可以參考下2014-08-08

