Java中使用memcache快取
阿新 • • 發佈:2018-11-06
一、簡要概述:
memcache叢集環境下快取解決方案,是一個高效能的分散式的記憶體物件快取系統,通過在記憶體庫裡維護一個統一的巨大的hash表,儲存各種資料,包括影象、視訊、檔案以及資料庫檢索結果等。
簡單的說就是講資料呼叫到儲存中,後從記憶體中讀取,從而大大提高讀取速度。memcache是這個專案的名稱,而memcached是它的服務端的主程式檔名。
二、常用方法:
1、初始化memcache
//初始化memcache public static void initMemcache(){ String[] servers = {"127.0.0.1:11211"}; SockIOPool pool = SockIOPool.getInstance(); pool.setServers(servers); pool.setFailover(true); pool.setInitConn(10); pool.setMinConn(5); pool.setMaxConn(250); pool.setMaintSleep(30); pool.setNagle(false); pool.setSocketTO(3000); pool.setAliveCheck(true); pool.initialize(); }
2、建立快取
/**
* 建立快取
* @param key 鍵
* @param value 值
*/
public static void createMemcache(String key, Object value){
//建立client物件
MemCachedClient mclent = new MemCachedClient();
//建立快取
mclent.set(key, value);
}
3、刪除指定快取
/** * 刪除指定快取 * @param key 鍵 */ public static void deleteMemcache(String key){ MemCachedClient mclent = new MemCachedClient(); mclent.delete(key); }
4、獲取快取
/**
* 獲取快取
* @param key 鍵
* @return 值
*/
public static Object getMemcache(String key){
MemCachedClient mclent = new MemCachedClient();
Object value = mclent.get(key);
return value;
}
5、獲取多個快取
/** * 獲取多個快取物件 * @param keys * @return */ public static Map<String, Object> getManyMemcache(String[] keys){ MemCachedClient mclent = new MemCachedClient(); Map<String, Object> m = mclent.getMulti(keys); return m; }
6、清空指定型別的快取
/**
* 清除指定型別的快取
* @param str
* @return
*/
public static boolean flashLMemcache(String[] str){
MemCachedClient mclent = new MemCachedClient();
mclent.flushAll(str);
return true;
}
7、清空所有快取
/**
*清空快取
* @return
*/
public static boolean flashMemcache(){
MemCachedClient mclent = new MemCachedClient();
mclent.flushAll();
return true;
}
三、演示與測試:
/**
* memcache,儲存呼叫測試
*/
AbMemcache.initMemcache();
AbMemcache.createMemcache("redant", "今天20181106");
Object obj = AbMemcache.getMemcache("redant");
System.err.println(obj);
演示結果:
/**
- memcache,刪除指定快取
*/
AbMemcache.deleteMemcache("redant");
System.err.println(AbMemcache.getMemcache("redant"));
/** - 清空全部快取
*/
AbMemcache.flashMemcache();
System.err.println(AbMemcache.getMemcache("redant"));
演示結果: