MemcachedHelper工具類

dw7n 8年前發布 | 1K 次閱讀 Java memcached
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);
    }
}
 本文由用戶 dw7n 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!