简介
Memcached 是一个高性能的分布式内存对象缓存系统。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。但是它并不提供冗余(例如,复制其hashmap条目);当某个服务器停止运行或崩溃了,所有存放在上的键/值对都将丢失。
在Linux上安装Memcached
memcached依赖于libevent,我们所使用的版本为:
libevent-2.0.16
memcached-1.4.10
首先确认libevent是否安装,
#ls -al /usr/lib | grep libevent
如图所示说明libevent已经安装。
如果没有安装,安装步骤如下:
# wget http://cloud.github.com/downloads/libevent/libevent/libevent-2.0.16-stable.tar.gz
# tar zxvf libevent-2.0.16-stable.tar.gz
# cd libevent-2.0.16-stable
# ./configure --prefix=/usr
# make && make install
#ls -al /usr/lib | grep libevent
# wget http://memcached.googlecode.com/files/memcached-1.4.10.tar.gz
# tar zxvf memcached-1.4.10.tar.gz
# cd memcached-1.4.10
# ./configure --with-libevent=/usr
# make && make install
安装成功后的文件路径为:/usr/local/bin/memcached
测试memcached是否安装成功
# ls -al /usr/local/bin/mem*
说明已经安装成功!
启动memcached
手动启动:
# memcached -d -m 1024 -u root -p 11211
参数说明:
-d 启动为守护进程
-m <num> 分配给Memcached使用的内存数量,单位是MB,默认为64MB
-u <username> 运行Memcached的用户,仅当作为root运行时
-l <ip_addr> 监听的服务器IP地址,默认为环境变量INDRR_ANY的值
-p <num> 设置Memcached监听的端口,最好是1024以上的端口
-c <num> 设置最大并发连接数,默认为1024
-P <file> 设置保存Memcached的pid文件,与-d选择同时使用
停止服务:
1. ps -ef | grep memcached
2. kill -9 进程
脚本启动:
# vim /etc/init.d/memcached
输入如下脚本:
#!/bin/bash
#
# Save me to /etc/init.d/memcached
# And add me to system start
# chmod +x memcached
# chkconfig --add memcached
# chkconfig --level 35 memcached on
#
# Written by lei
#
# chkconfig: - 80 12
# description: Distributed memory caching daemon
#
# processname: memcached
# config: /usr/local/memcached/my.conf
source /etc/rc.d/init.d/functions
### Default variables
PORT="11211"
USER="root"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""
#SYSCONFIG="/usr/local/memcached/my.conf"
### Read configuration
#[ -r "$SYSCONFIG" ] && source "$SYSCONFIG"
RETVAL=0
prog="/usr/local/memcached/bin/memcached"
desc="Distributed memory caching"
start() {
echo -n $"Starting $desc ($prog): "
daemon $prog -d -p $PORT -u $USER -c $MAXCONN -m $CACHESIZE $OPTIONS
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/memcached
return $RETVAL
}
stop() {
echo -n $"Shutting down $desc ($prog): "
killproc $prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/memcached
return $RETVAL
}
restart() {
stop
start
}
reload() {
echo -n $"Reloading $desc ($prog): "
killproc $prog -HUP
RETVAL=$?
echo
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
condrestart)
[ -e /var/lock/subsys/$prog ] && restart
RETVAL=$?
;;
reload)
reload
;;
status)
status $prog
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
RETVAL=1
esac
exit $RETVAL
赋予权限:
# cd /etc/init.d/
# chmod +x memcached
# chkconfig --add memcached
# chkconfig --level 35 memcached on
操作:
启动:service memcached start
停止:service memcached stop
重启:service memcached restart
xmemcached简介
xmemcached是java操作memcache的一个客户端,当然了还有其他的客户端,比如说spymemcached,选用xmemcached是因为它基于java nio实现的高性能memcache客户端,尤其是在高并发的前提下nio的性能将体现出来,读缓存库的效率非常高,存的效率和spy差不多。
具体的测试报告:
http://xmemcached.googlecode.com/svn/trunk/benchmark/benchmark.html
开始使用xmemcached
在pom.xml中添加xmemcached,依赖slf4j:
简单示例代码如下:
该代码实现了将List对象放入到缓存中并从缓存中读取出来。
将memcached启动加入到系统启动项
系统启动项文件(以51为例子):/etc/rc.d/rc.local
/usr/local/bin/memcached -d -p 11211 -c 1024 -m 64
/usr/local/bin/memcached -d -p 11212 -c 1024 -m 64
在rc.local配置文件中增加着两行代码就OK