1. 程式人生 > >Java中使用memcache快取

Java中使用memcache快取

一、簡要概述:

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"));

演示結果:

Java中使用memcache快取