1.
下载memcached-1.2.6.tar.gz http://www.danga.com/memcached/download.bml
2.
下载libevent。http://www.monkey.org/~provos/libevent/
Memcache用到了libevent这个库用于Socket的处理。
3.
先安装libevent。
tar xvfz libevent-1.4.9-stable.tar.gz
cd libevent-1.4.9-stable
./configure -prefix=/usr
make
make install
4.
测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 1月 3 14:24 libevent-1.4.so.2 -> libevent-1.4.so.2.1.2
-rwxr-xr-x 1 root root 280766 1月 3 14:24 libevent-1.4.so.2.1.2
-rw-r--r-- 1 root root 367950 1月 3 14:24 libevent.a
lrwxrwxrwx 1 root root 26 1月 3 14:24 libevent_core-1.4.so.2 -> libevent_core-1.4.so.2.1.2
-rwxr-xr-x 1 root root 107531 1月 3 14:24 libevent_core-1.4.so.2.1.2
-rw-r--r-- 1 root root 146970 1月 3 14:24 libevent_core.a
-rwxr-xr-x 1 root root 1009 1月 3 14:24 libevent_core.la
lrwxrwxrwx 1 root root 26 1月 3 14:24 libevent_core.so -> libevent_core-1.4.so.2.1.2
lrwxrwxrwx 1 root root 27 1月 3 14:24 libevent_extra-1.4.so.2 -> libevent_extra-1.4.so.2.1.2
-rwxr-xr-x 1 root root 224026 1月 3 14:24 libevent_extra-1.4.so.2.1.2
-rw-r--r-- 1 root root 282358 1月 3 14:24 libevent_extra.a
-rwxr-xr-x 1 root root 1016 1月 3 14:24 libevent_extra.la
lrwxrwxrwx 1 root root 27 1月 3 14:24 libevent_extra.so -> libevent_extra-1.4.so.2.1.2
-rwxr-xr-x 1 root root 974 1月 3 14:24 libevent.la
lrwxrwxrwx 1 root root 21 1月 3 14:24 libevent.so -> libevent-1.4.so.2.1.2
还不错,都安装上了。
5.
再安装memcached,只是需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr
tar xvfz memcached-1.2.6.tar.gz
cd memcached-1.2.6
./configure -with-libevent=/usr --enable-threads
make && make install
安装完成后会把memcached放到 /usr/local/bin/memcached
--enable-threads是使用多线程模式,默认是4,线程数要少于CUP数
6.
测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 121257 1月 3 14:38 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 130187 1月 3 14:38 /usr/local/bin/memcached-debug
7.
启动Memcache的服务器端:
#/usr/local/bin/memcached -d -m 10 -u root -l 192.168.105.73 -p 12000 -c 256 -P /tmp/memcached.pid
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是10MB,
-u是运行Memcache的用户,我这里是root,
-l是监听的服务器IP地址,如果有多个地址的话,我这里指定了服务器的IP地址192.168.105.73,
-p是设置Memcache监听的端口,我这里设置了12000,最好是1024以上的端口,
-c选项是最大运行的并发连接数,默认是1024,我这里设置了256,按照你服务器的负载量来设定,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid
8.
测试Memcache的服务器端:
# telnet 192.168.105.73 12000
Trying 192.168.105.73...
Connected to 192.168.105.73.
Escape character is '^]'.
set foo 0 0 3 (保存命令)输入
bar (数据)输入
STORED (结果)输出
get foo (取得命令)输入
VALUE foo 0 3 (数据)输出
bar (数据)输出
9.
结束Memcache进程
# kill `cat /tmp/memcached.pid`
10.在64位Linux上安装MemCached
启动memcached命令时出现错误:
[@root lib]#/usr/local/bin/memcached -h
/usr/local/bin/memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
由于是库文件依赖有问题,则使用libs参数:
[@root lib]# LD_DEBUG=libs /usr/local/bin/memcached -h
30495: find library=libevent-1.4.so.2 [0]; searching
30495: search cache=/etc/ld.so.cache
30495: search path=/lib64/tls/x86_64:/lib64/tls:/lib64/x86_64:/lib64:/usr/lib64/tls/x86_64:/usr/lib64/tls:/usr/lib64/x86_64:/usr/lib64 (system search path)
30495: trying file=/lib64/tls/x86_64/libevent-1.4.so.2
30495: trying file=/lib64/tls/libevent-1.4.so.2
30495: trying file=/lib64/x86_64/libevent-1.4.so.2
30495: trying file=/lib64/libevent-1.4.so.2
30495: trying file=/usr/lib64/tls/x86_64/libevent-1.4.so.2
30495: trying file=/usr/lib64/tls/libevent-1.4.so.2
30495: trying file=/usr/lib64/x86_64/libevent-1.4.so.2
30495: trying file=/usr/lib64/libevent-1.4.so.2
30495:
/usr/local/bin/memcached: error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory
复制一份或者建一个软链接即可解决问题:
[@root lib]# ln -s /usr/lib/libevent-1.4.so.2 /usr/lib64/libevent-1.4.so.2
11.telnet方式访问memcached
telnet 192.168.105.73 12111
stats: 服务器将返回每行按照 STAT 开始的状态信息,包括20行,20项左右的信息,包括守护进程的pid、版本、保存的项目数量、内存占用、最大内存限制等等信息。
12.memcached工具memcached-tool
下载地址:
http://code.sixapart.com/svn/memcached/trunk/server/scripts/memcached-tool
./memcache-tool 192.168.105.73:12111
13.emcached服务器运行情况的参数:
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 当前线程数