一、Memcached安装
下载Memcached的zip包,cmd切换到解压后的目录下
管理员身份运行:安装:memcached.exe -d install
启动:memcached.exe -d start
关闭:memcached.exe -d stop
卸载:memcached.exe -d uninstall
三、Memcached使用
1、 导入java_memcached-release_x.x.x.zip包下的几个jar包(具体包先自行下载,稍后给出地址)
2、代码
package com.liupeng.controller;
import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
import com.liupeng.domain.Person;
public class TestMemcached {
public static MemCachedClient mcc = new MemCachedClient();
public static TestMemcached tc = new TestMemcached();
//设置与缓存服务器的连接池
static{
//服务器列表和其权重
String[] servers={ "127.0.0.1:11211" };
Integer[] weights={3};
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 TestMemcached(){}
/**
* 获取唯一实例
* @return
*/
public static TestMemcached getInstance(){
return tc;
}
/*插入*/
/**
* 添加数据到缓存中
* @param key
* @param value
* @return
*/
public boolean add(String key,Object value){
return mcc.add(key, value);
}
/**
* 添加数据到缓存中,并设置超时时间
* @param key
* @param value
* @param expiry
* @return
*/
public boolean add(String key, Object value, Date expiry)
{
return mcc.add(key, value, expiry);
}
/*设置*/
/**
* 在缓存中设置一个键的值
* @param key
* @param value
* @return
*/
public boolean set(String key,Object value){
return mcc.set(key, value);
}
/**
* 在缓存中设置一个键的值,并设置超时时间
* @param key
* @param value
* @param expiry
* @return
*/
public boolean set(String key ,Object value ,Date expiry){
return mcc.set(key, value, expiry);
}
/*替换*/
/**
* 将某个键的值替换成新的值
* @param key
* @param value
* @return
*/
public boolean replace(String key, Object value)
{
return mcc.replace(key, value);
}
/**
* 将某个键的值替换成新的值,并设置超时时间
* @param key
* @param value
* @param expiry
* @return
*/
public boolean replace(String key, Object value, Date expiry)
{
return mcc.replace(key, value, expiry);
}
/*获取*/
/**
* 从缓存中获取某个键的值
* @param key
* @return
*/
public Object get(String key)
{
return mcc.get(key);
}
public static void main(String[] args) {
/**********简单测试***********/
TestMemcached tm = TestMemcached. getInstance();
tm.add( "hello", "1234", new Date( new Date().getTime() + 10000));//10秒过期
while( true){
try {
Thread. sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
System. out.println(tm.get( "hello"));
}
/*******java bean测试********/
//实体类必须要实现 Serializable接口
Person person = new Person( "liupeng");
TestMemcached tm = TestMemcached.getInstance ();
tm.add( "bean", person);
Person p = (Person)tm.get( "bean");
System. out.println(p.getName());
//修改名称不影响缓存中值
p.setName( "xiaoliu");
p = (Person)tm.get( "bean");
System. out.println(p.getName());
p.setName( "xiaoliu");
tm.replace( "bean", p);
System. out.println(p.getName());
}
}