1. 安装libevent
下包:
libevent-1.4.12-stable.tar.gz
memcached-1.2.8-repcached-2.2.tar.gz
# yum install -y gcc gcc-c++ make
# tar zxf libevent-1.4.12-stable.tar.gz -C /usr/local/src/
# cd /usr/local/src/libevent-1.4.12-stable/
# ./configure --prefix=/usr/local/libevent
# make
# make install
2. 链接库文件
# cd /usr/lib64
# ln -s /usr/local/libevent/lib/libevent-1.4.so.2.1.3 libevent-1.4.so.2
# ln -s /usr/local/libevent/lib/libevent_core-1.4.so.2.1.3 libevent_core-1.4.so.2
# ln -s /usr/local/libevent/lib/libevent_core-1.4.so.2.1.3 libevent_core.so
# ln -s /usr/local/libevent/lib/libevent_extra-1.4.so.2.1.3 libevent_extra-1.4.so.2
# ln -s /usr/local/libevent/lib/libevent_extra-1.4.so.2.1.3 libevent_extra.so
# ln -s /usr/local/libevent/lib/libevent-1.4.so.2.1.3 libevent.so
3. 安装memcache
# cd
# tar zxf memcached-1.2.8-repcached-2.2.tar.gz -C /usr/local/src/
# cd /usr/local/src/memcached-1.2.8-repcached-2.2/
# ./configure --prefix=/usr/local/memcached_repcached --enable-replication --program-transform-name=s/memcached/repcached/ --with-libevent=/usr/local/libevent
# make
# make install
4. 启动memcache
4.1 master
# /usr/local/memcached_repcached/bin/repcached -v -d -m 256 -p 11211 -l 172.16.0.61 -u root -X 11212
# netstat -antp | grep 112
tcp 0 0 172.16.0.61:11211 0.0.0.0:* LISTEN 9429/repcached
tcp 0 0 172.16.0.61:11212 0.0.0.0:* LISTEN 9429/repcached
4.2 slave
# /usr/local/memcached_repcached/bin/repcached -v -d -m 256 -p 11213 -l 172.16.0.62 -u root -x 172.16.0.61 -X 11212
# netstat -anp|grep 112
/---*
tcp 0 0 172.16.0.62:11213 0.0.0.0:* LISTEN 9425/repcached
tcp 0 0 172.16.0.62:42198 172.16.0.61:11212 ESTABLISHED 9425/repcached
//启动从服务后,监听11212端口,可以使用"-X"来改变监听端口
udp 0 0 172.16.0.62:11211 0.0.0.0:* 9425/repcached
*---/
5. 测试:
[root@node3 ~]# yum install -y telnet
[root@node3 ~]# telnet 172.16.0.61 11211
add key1 0 0 5 输入,定义key
hello 输入,key的值
STORED 返回
get key1 输入,下载(查看)key的内容
VALUE key1 0 5 返回
hello 返回
END 返回
delete key1 0 输入,删除key
DELETED 返回
get key1 输入,下载key
END 返回
stats 输入,查看状态,看不懂
......
quit 输入,退出
Connection closed by foreign host.
---------------------------------------
[root@node3 ~]# telnet 172.16.0.62 11213
get key1 输入,下载(查看)key的内容
VALUE key1 0 5 返回
hello 返回
END 返回
quit 输入,退出
Connection closed by foreign host.
1. 添加key
<command name> <key> <flags> <exptime> <bytes>
(1)<command name> 可以是”set”, “add”, “replace”:
“set”表示按照相应的<key>存储该数据,没有的时候增加,有的覆盖。
“add”表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败。
“replace”表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败。
(2)<key> 客户端需要保存数据的key:
key1 表示key的名字
(3)<flags> 是一个16位的无符号的整数(以十进制的方式表示)。
该标志将和需要存储的数据一起存储,并在客户端get数据时返回。
客户可以将此标志用做特殊用途,此标志对服务器来说是不透明的。
0 表示一个跟该key有关的自定义数据
(4)<exptime> 过期的时间。
若为0表示存储的数据永远不过时(但可被服务器算法:LRU 等替换)。
如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。
0 表示该key永不过期
(5)<bytes> 需要存储的字节数(不包含最后的"\r\n"),当用户希望存储空数据时,<bytes>可以为0
5 表示key1值的字节数
2. 添加后的返回值
(1)"STORED":表示存储成功
(2)"NOT_STORED": 表示存储失败,但是该失败不是由于错误,是由命令本身的要求所引起的,或者该项在删除队列之中。
3. 获取key的返回值
VALUE <key> <flags> <bytes>
4. 删除key
delete <key> <time>
(1)<key> 需要被删除数据的key
(2)<time> 客户端希望服务器将该数据删除的时间(unix时间或者从现在开始的秒数)
5. stats 状态查看
pid 进程id
uptime 总的运行时间,秒数
time 当前时间
version 版本号
STAT pointer_size 64 pointer【指针】
STAT rusage_user 0.041993
STAT rusage_system 0.056991
curr_items 当前缓存中的KeyValue数量
total_items 曾经总共经过缓存的KeyValue数量
bytes 所有的缓存使用的内存量
curr_connections 当前连接数
cmd_get 总获取次数
cmd_set 总的写入次数
get_hits 总的命中次数
get_misses 获取失败次数
bytes_read 总共读取的流量字节数
bytes_written 总的写入流量字节
limit_maxbytes 最大允许使用的内存量,字节
STAT threads 2
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT replication MASTER
STAT repcached_version 2.2
STAT repcached_qi_free 8191
6. 清空所有key
flush_all