欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP模塊 Memcached功能多于Memcache

 更新時(shí)間:2011年06月14日 22:44:04   作者:  
PHP搭配Memcached已經(jīng)是婦孺皆知的標(biāo)配了。再提似乎讓人覺(jué)得太“圡”了,不過(guò)有一些細(xì)節(jié)不見(jiàn)得人人都清楚
比如說(shuō)PECL里有兩個(gè)Memcached的模塊,MemcacheMemcached,目前大部分PHP環(huán)境里使用的是名字里不帶d的Memcache版本,這個(gè)版本釋出的比較早,是一個(gè)原生版本,與之對(duì)應(yīng)的帶d的Memcached版本則是建立在libmemcached的基礎(chǔ)上,所以說(shuō)Memcached版本的功能更全一些。

安裝Memcached版本的PHP模塊

wget http://download.tangent.org/libmemcached-0.35.tar.gz
tar zxf libmemcached-0.35.tar.gz
cd libmemcached-0.35
./configure
make
make install

wget http://pecl.php.net/get/memcached-1.0.0.tgz
tar zxf memcached-1.0.0.tgz
cd memcached-1.0.0
phpize
./configure
make
make install

打開(kāi)php.ini加上:

extension = "memcached.so"

這樣安裝就結(jié)束了,你可以通過(guò)下列命令來(lái)確認(rèn):

php -m | grep mem

演示Memcached版本的新功能

先虛構(gòu)一個(gè)問(wèn)題,假設(shè)counter初始值是一個(gè)整數(shù),不使用increment方法,通過(guò)get/set完成每次加一。

在Memcache版本里,我們只能按照大致如下的方式來(lái)進(jìn)行:

$m = new Memcache();
$m->addServer('localhost', 11211);
$v = $m->get('counter');
$m->set('counter', $v + 1);

由于get/set這兩個(gè)動(dòng)作無(wú)法作為一個(gè)原子來(lái)操作,所以當(dāng)多個(gè)進(jìn)程同時(shí)處理時(shí),會(huì)出現(xiàn)丟失的可能,更讓人惱火的是,你根本就不知道什么時(shí)候出現(xiàn)丟失。

再看看Memcached版本里,我們是如何做的:

$md = new Memcached();
$md->addServer('localhost', 11211);
$v = $md->get('counter', null, $token)
$md->cas($token, 'counter', $v + 1);

cas是Memcached版本里提供的功能,說(shuō)白了就是一個(gè)樂(lè)觀鎖的功能,如果你把$token的值var_dump出來(lái),就會(huì)發(fā)現(xiàn)$token其實(shí)就是一個(gè)版本號(hào),如果通過(guò)get得到的$token版本號(hào)在cas的時(shí)候不對(duì)應(yīng),就說(shuō)明已經(jīng)有別的操作更新了,此時(shí)cas操作會(huì)失敗,至于如何繼續(xù)操作,就看你自己了。

注:如果你想手動(dòng)重現(xiàn)一下沖突的情況,可在get和cas之間sleep若干秒,并拷貝兩份腳本,先后執(zhí)行。

順便說(shuō)一句,推薦的Memcached版本模塊的哈希設(shè)置如下:

$md->setOption(Memcached::OPT_DISTRIBUTION, Memcached::DISTRIBUTION_CONSISTENT);
$md->setOption(Memcached::OPT_HASH, Memcached::HASH_CRC);

總結(jié)

Memcached版本還有很多Memcache沒(méi)有的功能,比如通過(guò)getByKey, setByKey等自動(dòng)支持多個(gè)服務(wù)器,就不贅述了,該用哪個(gè)擴(kuò)展已經(jīng)不言自明了。

補(bǔ)充:http://code.google.com/p/memcached/wiki/PHPClientComparison

相關(guān)文章

最新評(píng)論