|
public>
// 创建全局的唯一实例
protected static MemCachedClient mcc = new MemCachedClient();
static {
// 服务器列表和其权重
String[] servers = { "127.0.0.1:11211" };
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的规则就是在发送一个包之前,本地机器会等待远程主机
// 对上一次发送的包的确认信息到来;这个方法就可以关闭套接字的缓存,
// 以至这个包准备好了就发;
// 设置TCP的参数,连接超时等
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setSocketConnectTO(0);
// 初始化连接池
pool.initialize();
// 压缩设置,超过指定大小(单位为K)的数据都会被压缩
mcc.setCompressEnable(true);
mcc.setCompressThreshold(64 * 1024);
}
public static void bulidCache() {
// set(key,value,Date) ,Date是一个过期时间,如果想让这个过期时间生效的话,这里传递的new Date(long
// date) 中参数date,需要是个大于或等于1000的值。
// 因为java client的实现源码里是这样实现的 expiry.getTime() / 1000 ,也就是说,如果
// 小于1000的值,除以1000以后都是0,即永不过期
mcc.set("test", "This is a test String", new Date(10000));
mcc.set("test", "This is a test String111", new Date(10000));// 十秒后过期
User u = new User();
u.setUsername("aaaa");
mcc.set("user", u);
User u1 = (User) mcc.get("user");
System.out.println(u1.getUsername());
// add 當這個 key 不存在的時候才保存 value
// replace 當 key 相同的時候才替換 value
// set 直接寫入新的 value ,如果 key 存在就是替換 value
}
public static void output() {
// 从cache里取值
String value = (String) mcc.get("test");
System.out.println(value);
}
public static void main(String[] args) {
bulidCache();
output();
}
}
|
|
|