good luck!!!
1、安装了gcc环境
由于memcached和libevent是由C编写的,所以首先确保你的系统安装了gcc,如果没有安装,使用yum安装即可命令:
<span style="font-size:12px;">1、yum -y install gcc 2、yum -y install gcc-c++ </span>
2、编译安装libevent:
如果你选择用linux指令下载压缩包,请按照下面方式进行,如果你自己在电脑中直接下载可以省略第1步
<span style="font-size:12px;">wget <a target=_blank href="http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz" target="_blank"><span style="color: rgb(79, 99, 113);" color="#4f6371">http://monkey.org/~provos/libevent</span></a><a target=_blank href="http://monkey.org/~provos/libevent-2.0.21-stable.tar.gz">-2.0.21-stable.tar.gz</a> tar zxvf libevent-2.0.21-stable.tar.gz ##解压 cd libevent-2.0.21-stable/ ./configure --prefix=/usr make make install</span>
<span style="font-size:12px;">测试是否安装成功: 查看下/usr/lib是否有libevent等文件(ls -al /usr/lib | grep libevent) </span>
3、编译安装Memcached:
如果你选择用linux指令下载压缩包,请按照下面方式进行,如果你自己在电脑中直接下载可以省略第1步
<span style="font-size:12px;">wget <a target=_blank href="http://danga.com/memcached/dist/memcached-1.4.15.tar.gz">http://danga.com/memcached/dist/memcached-1.4.15.tar.gz</a> tar zxvf memcached-1.4.15.tar.gz cd memcached-1.4.15/ ./configure --with-libevent=/usr make make install</span>
<span style="font-size:12px;">测试是否安装成功:(ls -al /usr/local/bin/memcached)</span>
<span style="font-size:12px;">以下是memcache的命令参数解释: -p <num> 监听的端口 -l <ip_addr> 连接的IP地址, 默认是本机 -d start 启动memcached 服务 -d restart 重起memcached 服务 -d stop|shutdown 关闭正在运行的memcached 服务 -d install 安装memcached 服务 -d uninstall 卸载memcached 服务 -u <username> 以<username>的身份运行 (仅在以root运行的时候有效) -m <num> 最大内存使用,单位MB。默认64MB -M 内存耗尽时返回错误,而不是删除项 -c <num> 最大同时连接数,默认是1024 -f <factor> 块大小增长因子,默认是1.25 -n <bytes> 最小分配空间,key+value+flags默认是48 -h 显示帮助 </span>
<span style="font-size:12px;">接下来我给自己开了3个memcached 端口: memcached -m 1 -u root -d -l 192.168.1.177 -p 11211 memcached -m 1 -u root -d -l 192.168.1.177 -p 11212 memcached -m 1 -u root -d -l 192.168.1.177 -p 11213</span>
<span style="font-size:12px;">使用ps aux|grep memcached可以查看端口详细情况。</span>
4、编译安装magent:
如果你选择用linux指令下载压缩包,请按照下面方式进行,如果你自己在电脑中直接下载可以省略第3步,这里之所以和前面不一样是因为解压的时候不会像上面2种创建文件夹,所以要手动自己创建文件夹。
mkdir magent cd magent/ wget <a target=_blank href="http://memagent.googlecode.com/files/magent-0.6.tar.gz">http://memagent.googlecode.com/files/magent-0.6.tar.gz</a> tar zxvf magent-0.6.tar.gz /sbin/ldconfig sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile make cp magent /usr/bin/magent cd ../
如果在第7不make的时候出现如下错误:
gcc -lrt -Wall -g -O2 -I/usr/local/include -m64 -c -o magent.o magent.c 02.magent.c: In function ‘writev_list’: 03.magent.c:729: error: ‘SSIZE_MAX’ undeclared (first use in this function) 04.magent.c:729: error: (Each undeclared identifier is reported only once 05.magent.c:729: error: for each function it appears in.) 06.make: *** [magent.o] Error 1
解决办法如下:
vi ketama.h
在开头加入
01.#ifndef SSIZE_MAX 02.# define SSIZE_MAX 32767 03.#endif
magent -u root -n 51200 -l 127.0.0.1 -p 12000 -s 127.0.0.1:11211 -s 127.0.0.1:11212 -b 127.0.0.1:11213
a、分别在11211,、11212、11213端口启动memcached实例,在12000端口开启magent代理实例
b、11211、11212端口为主memcached,11213为备份memcached。
c、客户端连接12000端口,连接magent,进行memcached操作,相应的值会写到11211,、11212、11213三个端口的实例。
d、当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;当11211和11212重启之后,连接到12000端口的magent取数据,数据会丢失。
e、当11211端口的Memcached死掉,magent会从11212端口的memcached取值,重启11211端口的memcached实例,连接12000端口的magent取值,不会发生错误,但11211的memcached实例的数据已经丢失。
5、安装telnet
查看telnet是否安装
查看telnet客户端是否安装:# rpm -q telnet
若无安装,则执行:
# yum -y install telnet
查看telnet服务端是否安装:
# rpm -q telnet-server
若无安装,则执行:
# yum -y install telnet-server
安装完成后你就可以在linux指令栏中直接使用 telnet 192.168.1.177 11211 直接连接系统的memcached端口。