安装memcached
- 分别把memcached和libevent下载回来,放到 /tmp 目录下:
# cd /tmp# wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz
- 先安装libevent:
# tar zxvf libevent-1.2.tar.gz# cd libevent-1.2# ./configure --prefix=/usr# make# make install
- 测试libevent是否安装成功:
# ls -al /usr/lib | grep libeventlrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3-rw-r--r-- 1 root root 454156 11?? 12 17:38 libevent.a-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.lalrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3还不错,都安装上了。
- 安装memcached,同时需要安装中指定libevent的安装位置:
# cd /tmp# tar zxvf memcached-1.2.0.tar.gz# cd memcached-1.2.0# ./configure --with-libevent=/usr# make# make install如果中间出现报错,请仔细检查错误信息,按照错误信息来配置或者增加相应的库或者路径。安装完成后会把memcached放到 /usr/local/bin/memcached ,
- 测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug
启动memcached服务端
memcached -d -m 10 -u root -l 192.168.40.4 -p 11211 -c 256 -P /tmp/memcached.pid
参数说明:-d选项是启动一个守护进程-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB-u是运行Memcache的用户,我这里是root-l是监听的服务器IP地址-p是设置Memcache监听的端口,最好是1024以上的端口,默认端口11211-c选项是最大运行的并发连接数,默认是1024,按照你服务器的负载量来设定-P是设置保存Memcache的pid文件
telnet操作memcached
- 命令格式
<command name> <key> <flags> <exptime> <bytes>\r\n <data block>\r\n
a) <command name> 可以是”set”, “add”, “replace”。“set”表示按照相应的<key>存储该数据,没有的时候增加,有的覆盖。“add”表示按照相应的<key>添加该数据,但是如果该<key>已经存在则会操作失败。“replace”表示按照相应的<key>替换数据,但是如果该<key>不存在则操作失败
b) <key> 客户端需要保存数据的key。
c) <flags> 是一个16位的无符号的整数(以十进制的方式表示)。该标志将和需要存储的数据一起存储,并在客户端get数据时返回。客户可以将此标志用做特殊用途,此标志对服务器来说是不透明的。
d) <exptime> 过期的时间。若为0表示存储的数据永远不过时(但可被服务器算法:LRU 等替换)。如果非0(unix时间或者距离此时的秒数),当过期后,服务器可以保证用户得不到该数据(以服务器时间为标准)。
e) <bytes> 需要存储的字节数(不包含最后的”\r\n”),当用户希望存储空数据时,<bytes>可以为0
f) 最后客户端需要加上”\r\n”作为”命令头”的结束标志。<data block>\r\n
- 交互实例
telnet连接到memcached:telnet 127.0.0.1 11211
SET:添加一个新的条目到memcached,或是用新的数据替换掉已存在的条目set test1 0 0 10testing001STORED
ADD:仅当key不存在的情况下存储数据。如果一个key已经存在,将得到NOT_STORED的响应add test1 0 0 10testing002NOT_STOREDadd test2 0 0 10testing002STORED
REPLACE:仅当key已经存在的情况下存储数据。如果一个key不存在,将得到NOT_STORED的响应replace test1 0 0 10testing003STOREDreplace test3 0 0 10testing003NOT_STORED
GET:从memcached中返回数据。从缓存中返回数据时,将在第一行得到key的名字,flag的值和返回的value的长度。真正的数据在第二行,最后返回END。如果key并不存在,那么在第一行就直接返回END。get test1VALUE test1 0 10testing003ENDget test4ENDget test1 test2VALUE test1 0 10testing003END
- 检查Memcache服务器状态
stats在这里可以看到memcache的获取次数,当前连接数,写入次数,已经命中率等
- 清空所有键值
flush_all注:flush并不会将items删除,只是将所有的items标记为expired,因此这时memcache依旧占用所有内存。
- 退出
quit