memcached

memcache状态

telnet 127.0.0.1 11211
stats
或者
获取运行状态
echo stats | nc 192.168.1.123 11200
watch "echo stats | nc 192.168.1.123 11200" (实时状态)

memcache stats命令

stats 命令的功能正如其名:转储所连接的 memcached 实例的当前统计数据。在下例中,执行stats命令显示了关于当前 memcached 实例的信息:

STAT pid 22459                                     进程ID

STAT uptime 1027046                         服务器运行秒数

STAT time 1273043062                       服务器当前unix时间戳

STAT version 1.4.4                                服务器版本

STAT pointer_size 64                           操作系统(这台服务器是64位的)

STAT rusage_user 0.040000             进程累计用户时间

STAT rusage_system 0.260000        进程累计系统时间

STAT curr_connections 10                  当前打开连接数

STAT total_connections 82                 曾打开的连接总数

STAT connection_structures 13          服务器分配的连接结构数

STAT cmd_get 54                            执行get命令总数

STAT cmd_set 34                            执行set命令总数

STAT cmd_flush 3                           指向flush_all命令总数

STAT get_hits 9                            get命中次数

STAT get_misses 45                         get未命中次数

STAT delete_misses 5                       delete未命中次数

STAT delete_hits 1                         delete命中次数

STAT incr_misses 0                         incr未命中次数

STAT incr_hits 0                           incr命中次数

STAT decr_misses 0                         decr未命中次数

STAT decr_hits 0                           decr命中次数

STAT cas_misses 0                     cas未命中次数

STAT cas_hits 0                            cas命中次数

STAT cas_badval 0                          使用擦拭次数

STAT auth_cmds 0

STAT auth_errors 0

STAT bytes_read 15785                      读取字节总数

STAT bytes_written 15222                   写入字节总数

STAT limit_maxbytes 1048576                分配的内存数(字节)

STAT accepting_conns 1                     目前接受的链接数

STAT listen_disabled_num 0

STAT threads 4                             线程数

STAT conn_yields 0

STAT bytes 0                               存储item字节数

STAT curr_items 0                          item个数

STAT total_items 34                        item总数

STAT evictions 0                           为获取空间删除item的总数

magent

1.mkdir magent  
2.cd magent/  
3.wget http://memagent.googlecode.com/files/magent-0.5.tar.gz  (笔记附件)
4.tar zxvf magent-0.5.tar.gz  
5. /sbin/ldconfig  
6.sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile  
7.vi magent.c 添加
    #include <limits.h>
8. yum install libevent-devel libevent
9.make  
10.cp magent /usr/bin/magent  



2. magent  命令参数说明:
1.-h this message  
2.-u uid  
3.-g gid  
4.-p port, default is 11211. (0 to disable tcp support)  
5.-s ip:port, set memcached server ip and port  
6.-b ip:port, set backup memcached server ip and port  
7.-l ip, local bind ip address, default is 0.0.0.0 
8.-n number, set max connections, default is 4096 
9.-D do not go to background  
10.-k use ketama key allocation algorithm  
11.-f file, unix socket path to listen on. default is off  
12.-i number, max keep alive connections for one memcached server, default is 20 
13.-v verbose 


memcached -m 1 -u root -d -l 192.168.1.219 -p 11211
memcached -m 1 -u root -d -l 192.168.1.219 -p 11212
memcached -m 1 -u root -d -l 192.168.1.219 -p 11213

magent -u root -n 51200 -l 192.168.1.219 -p 12000 -s 192.168.1.219:11211 -s 192.168.1.219:11212 -b 192.168.1.219:11213
1、分别在112111121211213端口启动3Memcached进程,在12000端口开启magent代理程序;
21121111212端口为主Memcached11213端口为备份Memcached3、连接上12000magentset key1set key2,根据哈希算法,key1被写入1121211213端口的Memcachedkey2被写入1121211213端口的Memcached4、当1121111212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出。

测试流程:
# telnet 192.168.1.219 12000
Trying 1192.168.1.219...
Connected to 192.168.1219.
Escape character is '^]'.
stats
memcached agent v0.4
matrix 1 -> 192.168.1.219:11211, pool size 0
matrix 2 -> 192.168.1.219:11212, pool size 0
END
set key1 0 0 5
reesu                 长度为5
STORED
set key2 0 0 6
reesu1             长度为5
STORED
quit
Connection closed by foreign host.


# telnet 192.168.1.219 11211
Trying 192.168.1.219...
Connected to 192.168.1.219.
Escape character is '^]'.
get key1
END
get key2
VALUE key2 0 6
reesun1
END
quit
Connection closed by foreign host.


# telnet 192.168.1.219 11212
Trying 192.168.1.219...
Connected to 1192.168.1.219.
Escape character is '^]'.
get key1
VALUE key1 0 5
reesun
END
get key2
END
quit
Connection closed by foreign host.


# telnet 192.168.1.219 11213
Trying 192.168.1.219...
Connected to 1192.168.1.219.
Escape character is '^]'.
get key1
VALUE key1 0 5(key长度)
hello
END
get key2
VALUE key2 0 6
reesun
END
quit
Connection closed by foreign host.

清除数据

危险命令
flush_all                                            这个最简单的命令仅用于清理缓存中的所有名称/值对。
调用flush_all的时刻,数据所占的内存并不会被释放,但会被标记为过期,是不能再被取得了,你后来添加的值,
会根据需要逐渐占用掉之前的空间,所以,实际应用场景里,不需要做特殊处理。

key操作

1. cmd上登录memcache

> telnet 127.0.0.1 11211

2. 列出所有keys

stats items // 这条是命令
STAT items:7:number 1 
 STAT items:7:age 188
 END

3. 通过itemid获取key
接下来基于列出的items id,本例中为7,第2个参数为列出的长度,0为全部列出

 stats cachedump 7 0 // 这条是命令
 ITEM Sess_sidsvpc1473t1np08qnkvhf6j2 [183 b; 1394527347 s]
 END

4. 通过get获取key值
上面的stats cachedump命令列出了我的session key,接下来就用get命令查找对应的sessionget Sess_sidsvpc1473t1np08qnkvhf6j2 //这条是命令
VALUE
Sess_sidsvpc1473t1np08qnkvhf6j2 1440 1
 83
 Sess_|a:5:{s:6:"verify";s:32:"e70981fd305170c41a5632b2a24bbcaa";s:3:"uid";s:1:"1
 ";s:8:"username";s:5:"admin";s:9:"logintime";s:19:"2014-03-11 16:24:25";s:7:"log
 inip";s:9:"127.0.0.1";}

memcache安装

yum安装
yum install memcached memcached-devel -y
vim /etc/sysconfig/memcached 
PORT="11211"
USER="memcached"
MAXCONN="1024"   最大连接数
CACHESIZE="128"  最大内存使用 (MOPTIONS=""

/etc/init.d/memcached start

源码
Memcachedwget http://memcached.googlecode.com/files/memcached-1.4.4.tar.gz
tar -xzvf memcached-1.4.4.tar.gz
cd memcached-1.4.4
./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
make
make install
ln -s /usr/local/libevent/lib/libevent-1.4.so.2 /usr/lib/

memcached -m 500 -u root -d -l 192.168.1.219 -p 11211
memcached常用启动参数描述:
-d:启动一个守护进程,
-m:分配给Memcache使用的内存数量,单位是MB,默认是64MB-u:运行Memcache的用户
-l:监听的服务器IP地址
-p:设置Memcache监听的端口,默认是11211注:-p(p为小写)
-c:设置最大并发连接数,默认是1024
-P:设置保存Memcachepid文件注:-P(P为大写)
-h 显示帮助

连接到 memcachedtelnet ip 端口,如telnet 192.168.100.11 11211
stats查看状态,flush_all:清楚缓存
查看memcached状态的基本命令,通过这个命令可以看到如下信息:
STAT pid 22459                             进程ID
STAT uptime 1027046                        服务器运行秒数
STAT time 1273043062                       服务器当前unix时间戳
STAT version 1.4.4                         服务器版本
STAT pointer_size 64                       操作系统字大小(这台服务器是64位的)
STAT rusage_user 0.040000                  进程累计用户时间
STAT rusage_system 0.260000                进程累计系统时间
STAT curr_connections 10                   当前打开连接数
STAT total_connections 82                  曾打开的连接总数
STAT connection_structures 13              服务器分配的连接结构数
STAT cmd_get 54                            执行get命令总数
STAT cmd_set 34                            执行set命令总数
STAT cmd_flush 3                           指向flush_all命令总数
STAT get_hits 9                            get命中次数
STAT get_misses 45                         get未命中次数
STAT delete_misses 5                       delete未命中次数
STAT delete_hits 1                         delete命中次数
STAT incr_misses 0                         incr未命中次数
STAT incr_hits 0                           incr命中次数
STAT decr_misses 0                         decr未命中次数
STAT decr_hits 0                           decr命中次数
STAT cas_misses 0                          cas未命中次数
STAT cas_hits 0                            cas命中次数
STAT cas_badval 0                          使用擦拭次数
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 15785                      读取字节总数
STAT bytes_written 15222                   写入字节总数
STAT limit_maxbytes 1048576                分配的内存数(字节)
STAT accepting_conns 1                     目前接受的链接数
STAT listen_disabled_num 0               
STAT threads 4                             线程数
STAT conn_yields 0
STAT bytes 0                               存储item字节数
STAT curr_items 0                          item个数
STAT total_items 34                        item总数
STAT evictions 0                           为获取空间删除item的总数

获取运行状态
echo stats | nc 192.168.1.123 11200
watch "echo stats | nc 192.168.1.123 11200" (实时状态)