1.分别把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.gz2.先安装libevent:
# tar zxvf libevent-1.2.tar.gz
# cd libevent-1.2
# ./configure --prefix=/usr
# make
# make install3.测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 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.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
还不错,都安装上了。4.安装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 ,5.测试是否成功安装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的基本设置:
1.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p 12000 -c 256 -P /tmp/memcached.pid-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.0.200,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P(大写)是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid,2.如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`memcache的运行状态可以方便的用 stats 命令显示。
首先用telnet 127.0.0.1 11211这样的命令连接上memcache,然后直接输入stats就可以得到当前memcache的状态。
这些状态的说明如下:
pid memcache服务器的进程ID uptime 服务器已经运行的秒数 time 服务器当前的unix时间戳 version memcache版本 pointer_size 当前操作系统的指针大小(32位系统一般是32bit) rusage_user 进程的累计用户时间 rusage_system 进程的累计系统时间 curr_items 服务器当前存储的items数量 total_items 从服务器启动以后存储的items总数量 bytes 当前服务器存储items占用的字节数 curr_connections 当前打开着的连接数 total_connections 从服务器启动以后曾经打开过的连接数 connection_structures 服务器分配的连接构造数 cmd_get get命令(获取)总请求次数 cmd_set set命令(保存)总请求次数 get_hits 总命中次数 get_misses 总未命中次数 evictions 为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items) bytes_read 总读取字节数(请求字节数) bytes_written 总发送字节数(结果字节数) limit_maxbytes 分配给memcache的内存大小(字节) threads 当前线程数
stats items
输出各个slab中的item信息。s
stats slabs
输出slab中更详细的item信息
stats sizes
输出所有item的大小和个数stats cachedump <slab_id> <limit_num>
根据<slab_id>输出相同的<slab_id>中的item信息。<limit_num>是输出的个数,当<limit_num>为0是输出所有的item。
利用shell命令操作Memcached
1、数据存储(假设key为g,value为12345)
printf "set g 0 0 5\r\n12345\r\n"|nc 127.0.0.1 11211
STORED
2、数据取回(假设key为zhangyan)
printf "get g\r\n"|nc 127.0.0.1 11211VALUE g 0 5
12345
END3、数值增加1(假设key为g,并且value为正整数)
printf "incr g 1\r\n" | nc 127.0.0.1 11211
12346
4、数值减少3(假设key为g,并且value为正整数)
printf "decr g 3\r\n" | nc 127.0.0.1 11211
12343
5、数据删除(假设key为g)
printf "delete g\r\n" | nc 127.0.0.1 11211
DELETED
6、查看Memcached状态
printf "stats\r\n" | nc 127.0.0.1 11211
STAT pid 3025
STAT uptime 4120500
STAT time 1228021767
STAT version 1.2.6
STAT pointer_size 32
STAT rusage_user 433.463103
STAT rusage_system 1224.515845
STAT curr_items 1132460
STAT total_items 8980260
STAT bytes 1895325386
STAT curr_connections 252
STAT total_connections 547850
STAT connection_structures 1189
STAT cmd_get 13619685
STAT cmd_set 8980260
STAT get_hits 6851607
STAT get_misses 6768078
STAT evictions 0
STAT bytes_read 160396238246
STAT bytes_written 260080686529
STAT limit_maxbytes 2147483648
STAT threads 1
END7、模拟top命令,实时查看,查看Memcached状态:
watch "printf 'stats\r\n' | nc 127.0.0.1 11211"
或者
watch "echo stats | nc 127.0.0.1 11211"一、echo stats items | nc127.0.0.1 11211
STAT items:1:number 998 Slab Id=1 ; items数量:998(也就是已经存储了998个key值)
STAT items:1:age 604348 Slab Id=1 ; 已经存在时间,单位秒
STAT items:1:evicted 0 Slab Id=1 ; 被踢出的数量
STAT items:1:evicted_nonzero 0
STAT items:1:evicted_time 0
STAT items:1:outofmemory 0
STAT items:1:tailrepairs 0
STAT items:1:reclaimed 0
STAT items:6:number 91897 Slab Id=6 ; items数量:91897(也就是已经存储了91897个key值)
STAT items:6:age 604345 Slab Id=6 ; 已经存在时间,单位秒
STAT items:6:evicted 0 Slab Id=6 ; 被踢出的数量
STAT items:6:evicted_nonzero 0
STAT items:6:evicted_time 0
STAT items:6:outofmemory 0
STAT items:6:tailrepairs 0
STAT items:6:reclaimed 0
参考资料:
对Memcached有疑问的朋友可以参考下列文章:
Linux下的Memcache安装: http://www.ccvita.com/257.html
Windows下的Memcache安装: http://www.ccvita.com/258.html
Memcache基础教程: http://www.ccvita.com/259.html
Discuz!的Memcache缓存实现: http://www.ccvita.com/261.html
Memcache协议中文版: http://www.ccvita.com/306.html
Memcache分布式部署方案: http://www.ccvita.com/395.html