首先建立MemCached 緩存管理類,此代碼測試需要添加 java_memcached-release_2.6.3.jar,commons-pool-1.5.6.jar,slf4j-api-1.6.1.jar,slf4j-simple-1.6.1.jar 這幾個jar包
import java.util.Date;
import org.apache.commons.net.telnet.TelnetClient;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
/**
* 緩存管理類
*
* @author @ 2014-4-24
*/
public class MemCachedManager {
/**
* 記錄日志
*/
private static LoggerUtil log = LoggerUtil.getInstance(MemCachedManager.class);
/**
* 建立緩存用戶端
*/
public static MemCachedClient mcc = new MemCachedClient();
/**
* 緩存管理對象
*/
private static MemCachedManager memCached = null;
private static boolean isSuccess = true;
// 設定與緩存伺服器的連接配接池
static {
//判斷緩存是否服務是否開啟
TelnetClient telnet = new TelnetClient();
try {
String[] sers="192.168.15.1:11211".split(":");
telnet.connect(sers[0],Integer.parseInt(sers[1]));
} catch (Exception e) {
log.error("緩存初始化錯誤", e);
isSuccess = false;
}
// 伺服器清單和其權重
String[] servers = {"192.168.15.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的參數,連接配接逾時等
pool.setNagle(false);
pool.setSocketTO(1000);
pool.setSocketConnectTO(0);
// 初始化連接配接池
pool.initialize();
}
/**
* 私有構造方法,不允許執行個體化!
*
*/
private MemCachedManager() {
}
/**
* 擷取唯一執行個體.
*
* @return 緩存管理對象
*/
public static MemCachedManager getInstance() {
if (memCached == null) {
memCached = new MemCachedManager();
}
return memCached;
}
/**
* 添加一個指定的值到緩存中.
*
* @param key
* 主鍵
* @param value
* 值
* @return 是否成功
*/
public boolean add(String key, Object value) {
if (isSuccess) {
return mcc.add(key, value);
} else {
return false;
}
}
/**
* 添加一個指定的值到緩存中.
*
* @param key
* 主鍵
* @param value
* 值
* @param expiry
* 失效時間
* @return 是否成功
*/
public boolean add(String key, Object value, Date expiry) {
if (isSuccess) {
return mcc.add(key, value, expiry);
} else {
return false;
}
}
/**
* 替換緩存
*
* @param key
* 主鍵
* @param value
* 值
* @return 是否成功
*/
public boolean replace(String key, Object value) {
if (isSuccess) {
return mcc.replace(key, value);
} else {
return false;
}
}
/**
* 替換緩存
*
* @param key
* 主鍵
* @param value
* 值
* @param expiry
* 失效時間
* @return 是否成功
*/
public boolean replace(String key, Object value, Date expiry) {
if (isSuccess) {
return mcc.replace(key, value, expiry);
} else {
return false;
}
}
/**
* 根據指定的關鍵字擷取對象.
*
* @param key
* 主鍵
* @return 緩存對象的值
*/
public Object get(String key) {
if (isSuccess) {
return mcc.get(key);
} else {
return null;
}
}
/**删除緩存
* @param key 主鍵
* @return 是否删除成功
*/
public boolean delete(String key)
{
if (isSuccess) {
return mcc.delete(key);
} else {
return false;
}
}
/**判斷緩存是否存在
* @param key 主鍵
* @return 是否存在
*/
public boolean keyExists(String key) {
if (isSuccess) {
return mcc.keyExists(key);
} else {
return false;
}
}
}
測試:
MemCachedManager cache = MemCachedManager.getInstance();
long startDate = System.currentTimeMillis();
//cache.delete("test2");
//設定失效時間15s, 預設為0,永不失效,此時間最大不能超過30天
//cache.add("test2", "ffff",new Date(15000));
long endDate = System.currentTimeMillis();
long nowDate = (endDate - startDate);
System.out.println(nowDate);
System.out.print(" get value : " + cache.get("test2"));
轉載于:https://www.cnblogs.com/Adhere/p/3781609.html