一、memcached安装配置
windows平台安装
1、memcached-1.2.6-win32-bin.zip下载地址: http://code.jellycan.com/memcached/,执行memcached.exe -d install 安装。
2、守护进程方式启动:memcached.exe -m 512 -d start
-d为守护进程启动,不能指定端口 默认端口11211
-m为指定内存大小
3、指定端口启动:memcached.exe –p 33000 -m 512
可以启动多个服务,命令行窗口关闭则服务停止。
Linux平台安装
1、准备文件
下载地址 :http://code.google.com/p/memcached/downloads/list
截至笔者发表该文,目前最新版本为memcached-1.4.10.tar.gz
为了安全稳定 这里以memcached-1.4.6.tar.gz 为例作说明
libevent-2.0.12-stable.tar.gz 下载地址 :http://libevent.org/(目前最新版本为libevent-2.0.16-stable.tar.gz)
2、安装libevent,先验证ls /usr/lib |grep libevent 看是否安装。
若出现类似以下信息说明已经安装
[root@bookedb bin]# ls /usr/lib |grep libevent libevent-2.0.so libevent-2.0.so.5 libevent-2.0.so.5.1.1 libevent.a libevent_core-2.0.so.5 libevent_core-2.0.so.5.1.1 libevent_core.a libevent_core.la libevent_core.so libevent_extra-2.0.so.5 libevent_extra-2.0.so.5.1.1 libevent_extra.a libevent_extra.la libevent_extra.so libevent.la libevent_openssl-2.0.so.5 libevent_openssl-2.0.so.5.1.1 libevent_openssl.a libevent_openssl.la libevent_openssl.so libevent_pthreads-2.0.so.5 libevent_pthreads-2.0.so.5.1.1 libevent_pthreads.a libevent_pthreads.la libevent_pthreads.so libevent.so
#用tar命令解压安装文件
[root@bookedb ~]# tar zxf libevent-2.0.12-stable.tar.gz
[root@bookedb ~]# cd libevent-2.0.12-stable
用./configure命令进行配置,检查当前的环境
[root@bookedb ~]# ./configure –prefix=/usr
[root@bookedb ~]# make
[root@bookedb ~]# make install
安装memcached
[root@bookedb ~]# tar zxf memcached-1.4.6.tar.gz
[root@bookedb ~]# cd memcached-1.4.6
[root@bookedb ~]# ./configure
[root@bookedb ~]# make
[root@bookedb ~]# make install
验证安装
[root@bookedb ~]# ll /usr/local/bin | grep memcached
启动memcached
[root@bookedb ~]# /usr/local/bin/memcached -d -m 512 -c 512 -p 11211 -u root -t 10
-d选项是启动一个守护进程。
-m是分配给Memcache使用的内存数量,单位是MB。
-u是运行Memcache的用户。
-l是监听的服务器IP地址,如果有多个地址的话,指定下服务器的I监听P地址。
-p是设置Memcache监听的端口,我这里设置了11211,最好是1024以上的端口,我们这里统一使用11211-c选项是最大运行的并发连接数,默认是1024。
-P是设置保存Memcache的pid文件。
-vv 用very vrebose模式启动,调试信息和错误输出到控制台 。
注意:如果你前面一切OK,那恭喜你,你可以正常使用了。如果出现一些错误,请不要担心:
error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
解决办法:
1.首先 find / -name libevent-2.0.so.5 找到缺少的链接文件。
2.LD_DEBUG=libs /usr/local/bin/memcached -v
3. 从Debug信息中就知道程序去哪里找链接库了。我这边程序去 trying file=/usr/lib/libevent-1.4.so.2 而我的链接库的实际存储位置(根据机器的位,我的是64位的)是 /usr/local/lib64/libevent-1.4.so.2(在下面的位置随便选择一个就行了)
4. 做一个软连接 ln -s /usr/local/lib64/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
17768: trying file=/lib64/tls/x86_64/libevent-2.0.so.5
17768: trying file=/lib64/tls/libevent-2.0.so.5
17768: trying file=/lib64/x86_64/libevent-2.0.so.5
17768: trying file=/lib64/libevent-2.0.so.5
17768: trying file=/usr/lib64/tls/x86_64/libevent-2.0.so.5
17768: trying file=/usr/lib64/tls/libevent-2.0.so.5
17768: trying file=/usr/lib64/x86_64/libevent-2.0.so.5
17768: trying file=/usr/lib64/libevent-2.0.so.5
验证是否启动成功
[root@bookedb ~]# netstat -ntlp|grep memcached
停止memcached(找到进程,杀掉进程)
[root@bookedb ~]# pgrep -l memcached
16321 memcached
[root@bookedb ~]# kill -9 16321
二、测试memcached
1、命令中输入:telnet 192.168.120.28 11211(你安装的主机的ip和memcached启动端口),然后直接敲击stats命令
stats
STAT pid 16321
STAT uptime 2831
STAT time 1322126000
STAT version 1.4.6
STAT libevent 2.0.12-stable
STAT pointer_size 64
STAT rusage_user 0.004999
STAT rusage_system 0.004999
STAT curr_connections 12
STAT total_connections 18
STAT connection_structures 13
STAT cmd_get 6
STAT cmd_set 7
STAT cmd_flush 0
STAT get_hits 5
STAT get_misses 1
STAT delete_misses 0
STAT delete_hits 1
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 5023
STAT bytes_written 7246
STAT limit_maxbytes 536870912
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT threads 4
STAT conn_yields 0
STAT bytes 2479
STAT curr_items 2
STAT total_items 7
STAT evictions 0
STAT reclaimed 0
END
三、Memcache的常用命令
查询状态命令:stats
查询版本号 version
退出命令 quit
清空缓存数据(其实是将所有缓存数据标记为过期):flush_all
memcached的协议与数据存取
所谓协议,可以理解为对其操作(数据存取)的语法规则,存取数据的常用命令和参数如下:
set:存入一条记录
key:记录的键值
flags:十进制的int,标识存储记录时的客户端标志,在记录取出时会返回。
exptim:数据的过期时间,0表示不过期,其他数值则表示有效的毫秒数,在过期后,客户端将取不到这条记录,memcached中的过期记录会被清空或删除。
get:表示从memcached取出key对应的值,如果没有对应的值则返回结束标志END
append:表示对key所对应的值在最后再加入输入的内容
delete:删除key对应的值