arongsoft 发表于 2018-12-25 10:45:07

MemCached学习上

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();
  
}
  
}


页: [1]
查看完整版本: MemCached学习上