天天看點

memcached: java與memcached

memcached伺服器安裝好後,使用也是非常簡單的,我們需要一個用戶端來通路伺服器,在java中我們需要一個用戶端的jar包,本文示例用的是java_memcached-release_2.5.3.jar。

    好了,下面我們來簡單的看看,java中如何來通路memcached。

1 引入memcached的jar包java_memcached-release_2.5.3.jar

2 編寫通路memcached的簡單工具類。

import java.util.Date;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class MemCachedManager {

	// 建立全局的唯一執行個體
	protected static MemCachedClient mcc = new MemCachedClient();

	protected static MemCachedManager mcm = new MemCachedManager();

	// 設定與緩存伺服器的連接配接池
	static {

		// 伺服器清單和其權重
		String[] servers = { "192.168.135.131: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(3000);
		pool.setSocketConnectTO(0);

		// 初始化連接配接池
		pool.initialize();

		// 壓縮設定,超過指定大小(機關為K)的資料都會被壓縮
		mcc.setCompressEnable(true);
		mcc.setCompressThreshold(64 * 1024);
	}

	/**
	 * 保護型構造方法,不允許執行個體化!
	 */
	protected MemCachedManager() {
	}

	/**
	 * 擷取唯一執行個體.
	 * 
	 * @return
	 */
	public static MemCachedManager getInstance() {
		return mcm;
	}

	/**
	 * 添加一個指定的值到緩存中.
	 * 
	 * @param key
	 * @param value
	 * @return
	 */
	public boolean add(String key, Object value) {
		return mcc.add(key, value);
	}

	public boolean add(String key, Object value, Date expiry) {
		return mcc.add(key, value, expiry);
	}

	public boolean replace(String key, Object value) {
		return mcc.replace(key, value);
	}

	public boolean replace(String key, Object value, Date expiry) {
		return mcc.replace(key, value, expiry);
	}

	public boolean set(String key, Object value) {
		return mcc.set(key, value);
	}

	public boolean set(String key, Object value, Date expiry) {
		return mcc.set(key, value, expiry);
	}

	/**
	 * 根據指定的關鍵字擷取對象.
	 * @param key
	 * @return
	 */
	public Object get(String key) {
		return mcc.get(key);
	}
}                

  注意: 我将memcached用戶端的幾個操作方法都重新封裝了一次。

        add(key, valued): 将要緩存的資料添加到memcached記憶體中,如果key不存在,那就添加,如果key存在,那就不添加。

        set(key, value): 将指定key的值設定到memcached伺服器的記憶體中,不管key存在與否,都将設定新的value。

        replace(key, value): 替換memcached伺服器記憶體中的key的值,如果key不存在,則不操作,如果key存在,那麼久替換。

3 編寫測試類

public static void main(String[] args) {
		MemCachedManager cache = MemCachedManager.getInstance();
		cache.set("name", "name01");
		System.out.println(cache.get("name"));
	}                

簡單的操作如果上面的代碼,具體的需要我們自己去發現。在實際開發中怎麼使用,應該緩存那麼資料需要就實際系統和業務而定。

轉載于:https://my.oschina.net/51stick/blog/471736