|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦! 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是原生完成的,撑持OO和非OO两套接口并存,memcached是利用libmemcached,只撑持OO接口。
更具体的区分:http://code.谷歌.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
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散布测试呈报(分歧性哈希情形下的散列函数选择):
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"在这里想谈谈自己这六个多月的PHP学习心得,希望对给比我还新的新手们有所帮助,讲的不是很深刻,甚至有的想法可能是错误的,希望不要误导新人才好,大家要有自己的主见。 |
|