- 时间:2020-01-06 11:18 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:php的memcached客户端memcached
memcache的官方主页:[url=http://pecl.php.net/package/memcache]http://pecl.php.net/package/memcache[/url]
memcached的官方主页:[url=http://pecl.php.net/package/memcached]http://pecl.php.net/package/memcached[/url]
以下是我安装Memcached版本的PHP模块的过程记录:
wget [url=http://download.tangent.org/libmemcached-0.48.tar.gz]http://download.tangent.org/libmemcached-0.48.tar.gz[/url]
tar zxf libmemcached-0.48.tar.gz
cd libmemcached-0.48
./configure --prefix=/usr/local/libmemcached --with-memcached
make
make install
wget [url=http://pecl.php.net/get/memcached-1.0.2.tgz]http://pecl.php.net/get/memcached-1.0.2.tgz[/url]
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
完成[url=http://code.google.com/p/memcached/wiki/PHPClientComparison]http://code.google.com/p/memcached/wiki/PHPClientComparison[/url]
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中加
[url=http://www.1sucai.cn/article/27366.htm]http://www.1sucai.cn/article/27366.htm[/url]
PHP模块:Memcached > Memcache:[url=http://www.1sucai.cn/article/27367.htm]http://www.1sucai.cn/article/27367.htm[/url]
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"