Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent
1) 先安装libevent: wget http://cloud.github.com/download ... .0.20-stable.tar.gz # tar -zxvf libevent-2.0.20-stable.tar.gz # cd libevent-2.0.20 # ./configure --prefix=/usr # make # make install 2) 安装memcached wget http://memcached.googlecode.com/files/memcached-1.4.15.tar.gz # tar zxvf memcached-memcached-1.4.15.tar.gz # cd memcached-memcached-1.4.15 # ./configure --prefix=/usr/local --with-libevent=/usr # make # make install 启动memcached # /usr/local/bin/memcached -d -m 2048 -l 172.18.1.250 -p 11211 -u root -d选项是启动一个守护进程, -m是分配给Memcache使用的内存数量,单位是MB, -u是运行Memcache的用户,我这里是system_u, -l是监听的服务器IP地址,如果有多个地址的话,可以用多个 -l YOU_IP -p是设置Memcache监听的端口,最好是1024以上的端口, -c选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定, -P是设置保存Memcache的pid文件 如果要结束Memcache进程,执行: 用# ps -e 查看进程 # kill pid memcached的进程号 运行后有些系统还会提示-bash: kill: pid: arguments must be process or job IDs ,但是用# ps -e查看进程,已经没有memcached的进程了。
3) 安装PHP的memcache扩展 # tar zxvf memcache-2.1.0.tgz # cd memcache-2.1.0 # /usr/local/php/bin/phpize # ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir # make # make install 需要在php.ini(vi /etc/php.ini)文件中相应的位置加入: extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20060613/" extension=memcache.so session.cookie_lifetime = 86400 session.gc_maxlifetime = 86400 session.save_handler = memcache session.save_path = "tcp://192.168.20.243:11211,tcp://192.168.20.244:11211" 启动memcached 重启apache
优点和缺点: memcached部分实现的是内存空间分配和回收,以及存储服务监听和提供.对于分布式的实现,取决于客户端的使用和构造.我们使用的客户端是完全支持分布式的.只是可能会出现某些问题. 诸如一旦出现网络问题, 网络问题导致某个分布式服务器中的一台失去联系之后,到这台机器恢复正常工作的这段时间内, 写入分布式服务器的数据将基本不可以获取. 可以通过采用分布式hash表的方式解决这个问题
|