如果没有安装libevent,先安装
(1) 安装libevent
(apt-get install的:libevent好像没有被认出来)
下载 http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
libevent-2.0.12-stable$configure
libevent-2.0.12-stable$make
libevent-2.0.12-stable$sudo make install
(2)安装memcached
下载安装memcached1.4.5
http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
memcached-1.4.5$./configure
memcached-1.4.5$make
memcached-1.4.5$sudo make install
如果启动失败,找不到libevent,则连接一下
/usr/lib$ sudo ln -s /usr/local/lib/libevent-2.0.so.5 libevent-2.0.so.5
(3)启动
$memcached -d -m 128 -p 11111 -u root
这里需要说明一下memcached服务的启动参数:
-p 监听的端口
-l 连接的IP地址, 默认是本机
-d start 启动memcached服务
-d restart 重起memcached服务
-d stop|shutdown 关闭正在运行的memcached服务
-d install 安装memcached服务
-d uninstall 卸载memcached服务
-u 以的身份运行 (仅在以root运行的时候有效)
-m 最大内存使用,单位MB。默认64MB
-M 内存耗尽时返回错误,而不是删除项
-c 最大同时连接数,默认是1024
-f 块大小增长因子,默认是1.25-n 最小分配空间,key+value+flags默认是48
-h 显示帮助2)安装Memcache客户端
4.例子
下载jar包,引入项目中:http://cloud.github.com/downloads/gwhalin/Memcached-Java-Client/java_memcached-release_2.5.3.jar
import java.util.Date; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class MemcachedTest { // 创建全局的唯一实例 protected static MemCachedClient mcc = new MemCachedClient(); protected static MemcachedTest memCached = new MemcachedTest(); // 设置与缓存服务器的连接池 static { // 服务器列表和其权重 String[] servers = { "127.0.0.1:11111" }; Integer[] weights = { 3 }; // 获取socke连接池的实例对象 SockIOPool pool = SockIOPool.getInstance(); // 设置服务器信息 pool.setServers( servers ); pool.setWeights( weights ); // 设置初始连接数、最小和最大连接数以及最大处理时间 pool.setInitConn( 5 ); pool.setMinConn( 5 ); pool.setMaxConn( 250 ); pool.setMaxIdle( 1000 * 60 * 60 * 6 ); // 设置主线程的睡眠时间 pool.setMaintSleep( 30 ); // 设置TCP的参数,连接超时等 pool.setNagle( false ); pool.setSocketTO( 3000 ); pool.setSocketConnectTO( 0 ); // 初始化连接池 pool.initialize(); // 压缩设置,超过指定大小(单位为K)的数据都会被压缩 mcc.setCompressEnable( true ); mcc.setCompressThreshold( 64 * 1024 ); } /** * 保护型构造方法,不允许实例化! * */ protected MemcachedTest() { } /** * 获取唯一实例. * @return */ public static MemcachedTest getInstance() { return memCached; } /** * 添加一个指定的值到缓存中. * @param key * @param value * @return */ public boolean add(String key, Object value) { return mcc.add(key, value); } public boolean add(String key, Object value, Date expiry) { return mcc.add(key, value, expiry); } public boolean replace(String key, Object value) { return mcc.replace(key, value); } public boolean replace(String key, Object value, Date expiry) { return mcc.replace(key, value, expiry); } public boolean exists(String key){ return mcc.keyExists(key); } /** * 根据指定的关键字获取对象. * @param key * @return */ public Object get(String key) { return mcc.get(key); } public static void main(String[] args) { MemcachedTest cache = MemcachedTest.getInstance(); long startDate=System.currentTimeMillis(); for (int i = 0; i < 100; i++) { cache.add("test"+i, "我爱你中国"+i); } long endDate=System.currentTimeMillis(); long nowDate=(endDate-startDate)/1000; System.out.println(nowDate); System.out.print( " get value : " + cache.get( "test99" )); } }