首頁 > 後端開發 > php教程 > Memcached php的memcached客戶端memcached

Memcached php的memcached客戶端memcached

WBOY
發布: 2016-07-29 08:45:33
原創
888 人瀏覽過

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 -c/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->SaddServer($meache,hosts,host '11211');
$mem->addServer($memcachehost, '11212');
$mem->set('hx','9enjoy');
echo $mem->get( 'hx');


複製程式碼 程式碼如下:


$md 🎜>$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是​​原生實作的,支援OO和非OO兩套介面並存,memcached是使用libmemcached,只支援OO介面。
更詳細的區別:http://code.google.com/p/memcached/wiki/PHPClientComparison
memcached服務端是集中式的快取系統,分散式實作方法是由客戶端決定的。
memcached的分佈演算法一般有兩種選擇:
1、根據hash(key)的結果,模連接數的餘數決定儲存到哪個節點,也就是hash(key)% sessions.size(),這個演算法簡單快速,表現良好。然而這個演算法有個缺點,就是在memcached節點增加或刪除的時候,原有的快取資料將大規模失效,命中率大受影響,如果節點數多,快取資料多,重建快取的代價太高,因此有了第二個演算法。
2、Consistent Hashing,一致性雜湊演算法,他的查找節點過程如下:
    先求出memcached伺服器(節點)的雜湊值,並將其配置到0~232的圓(continuum)上。然後用同樣的方法求儲存資料的鍵的雜湊值,並映射到圓上。然後從資料映射到的位置開始順時針查找,將資料保存到找到的第一個伺服器上。如果超過2的32次方後仍然找不到伺服器,就會保存到第一台memcached伺服器上。
memcache在沒有任何設定的情況下,是使用第一種方法。 memcached要實作第一種方法,似乎是使用(未確認):
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);  
第二種一致性雜湊演算法:
memcache在php.ini加

複製程式碼 程式碼如下:

Memcache.hash_strategy =consistent> hash_function =crc32


memcached在程式中加(未確認)



複製程式碼 程式碼$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT); $md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC_CRC);

$m- >setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);

$mem->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);


一些參考文件:
memcached分佈測試報告(一致性雜湊情況下的雜湊函數選擇):
http://www.iteye.com/topic/346682
php模組memcache和memcached區別:http://www.jb51.net/article/27366.htm
PHP模組:Memcached > Memcache:http://www.jb51.net/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 php的memcached客戶端memcached,包含了Memcached方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板