import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Map;
import java.util.Properties;
import com.whalin.MemCached.MemCachedClient;
import com.whalin.MemCached.SockIOPool;
public class MemcachedHelper {
private static MemCachedClient mcc = new MemCachedClient();
static {
InputStream in = MemcachedHelper.class.getClassLoader().getResourceAsStream("memcached.properties");
Properties pro = new Properties();
try {
pro.load(in);
} catch (IOException e) {
e.printStackTrace();
}
String server01 = pro.getProperty("Server_01");
// 创建Socket连接池实例
SockIOPool spool = SockIOPool.getInstance();
String[] servers = {server01};
Integer[] weights = {3};
// 设置服务器信息
spool.setServers(servers);
spool.setWeights(weights);
spool.setFailover(true);
// 设置初始连接数、最小和最大连接数以及最大处理时间
spool.setInitConn(5);
spool.setMinConn(5);
spool.setMaxConn(250);
spool.setMaxIdle(1000 * 60 * 60 * 6);
// 设置主线程睡眠时间
spool.setMaintSleep(30);
// 设置TCP参数、连接超时等
spool.setNagle(false);
spool.setSocketTO(3000);
spool.setSocketConnectTO(0);
spool.setAliveCheck(true);
// 初始化连接池
spool.initialize();
}
protected MemcachedHelper() {
}
protected static MemcachedHelper instance = new MemcachedHelper();
/**
* 为受保护的对象提供一个公共的访问方法
*/
public static MemcachedHelper getInstance() {
return instance;
}
/**
* 保存数据到缓存中
* @param key
* @param value
* @return
*/
public boolean add(String key, Object value) {
return mcc.add(key, value);
}
/**
* 保存数据到缓存中并设置过期时间,单位秒
* @param key
* @param value
* @param expiryDate
* @return
*/
public boolean add(String key, Object value, Date expiryDate) {
return mcc.add(key, value, expiryDate);
}
/**
* 根据KEY替换缓存中的数据
*
* @param key
* @param value
* @return
*/
public boolean replace(String key, Object value) {
return mcc.replace(key, value);
}
public boolean replace(String key, Object value, Date expiryDate) {
return mcc.replace(key, value, expiryDate);
}
/**
* 当KEY不存在时将数据添加到缓存中 当KEY存在时则替换原来的数据
*
* @param key
* @param value
* @return
*/
public boolean set(String key, Object value) {
return mcc.set(key, value);
}
public boolean set(String key, Object value, Date expiryDate) {
return mcc.set(key, value, expiryDate);
}
/**
* 删除缓存中的数据
*
* @param key
* @return
*/
public boolean delete(String key) {
return mcc.delete(key);
}
/**
* 根据指定的KEY获取数据
*/
public Object get(String key) {
return mcc.get(key);
}
/**
* 判断指定的KEY是否存在
* @param key
* @return
*/
public boolean keyExists(String key){
return mcc.keyExists(key);
}
/**
* 批量获取数据
* @param keys
* @return
*/
public Map<String,Object> getMulit(String[] keys){
return mcc.getMulti(keys);
}
}
转载于:https://my.oschina.net/liu13430/blog/603356