memcache的Java客戶端調用,在網上還是有些少,很多都是php的。如何要想用Java調用memcache的服務,首先要有客戶端的支持,我們先下載一個客戶端吧。下載地址:https://github.com/gwhalin/Memcached-Java-Client。點擊下圖的“下載”圖標。
得到java_memcached-release_2.5.3.jar文件,將其添加到項目的classpath中。
下面就利用利用memcached java client來建立一個簡單的應用一個簡單的應用。
代碼如下(自於 java_memcached-release_2.5\doc\HOWTO.txt里面):
packagecom.mem; importcom.danga.MemCached.MemCachedClient; importcom.danga.MemCached.SockIOPool; /** * Created by IntelliJ IDEA. * User: liuzhy * Date: 2010-12-3 * Time: 16:43:36 */ public class MemCacheInvoke { protected static MemCachedClient mcc = new MemCachedClient(); static{ // 設置緩存服務器列表,當使用分布式緩存的時,可以指定多個緩存服務器。這里應該設置為多個不同的服務,我這里將兩個服務設置為一樣的,大家不要向我學習,呵呵。 String[] servers = { "10.15.0.215:46697", "10.15.0.215:46697", // "server3.mydomain.com:1624" }; // 設置服務器權重 Integer[] weights = {3, 2}; // 創建一個Socked連接池實例 SockIOPool pool = SockIOPool.getInstance(); // 向連接池設置服務器和權重 pool.setServers(servers); pool.setWeights(weights); // set some TCP settings // disable nagle // set the read timeout to 3 secs // and don't set a connect timeout pool.setNagle(false); pool.setSocketTO(3000); pool.setSocketConnectTO(0); // initialize the connection pool pool.initialize(); } public static void main(String[] args) { mcc.set("foo", "This is a test String"); String bar = mcc.get("foo").toString(); System.out.println(">>> " + bar); } }
這里有一個非常重要的問題需要注意:
就是上例中10.15.0.215:46697的端口,我們在memcache中啟動服務,用下面的命令啟動一個memcache服務:
./memcached -d -m 10 -u liuzhy -p 112233 -l 10.15.0.215 -P /tmp/memcached.pid
其中112233是memcache監聽的端口,有時候,這個端口如果被占用,會重新分配一個其他端口。程序中的調用端口46697,就是因為112233被占用。
如何看memcached.pid實際的端口呢,通過這個命令:
netstat -lp | grep memcached
如果不加-p參數,缺省的端口應該是11211。 執行main函數,得到結果如下:
>>>This is a test String
執行后,將 mcc.set("foo", "This is a test String"); 這行注釋掉,因為已經放入緩存,所以執行main函數,還能看到字符串輸出
>>>This is a test String
轉自 http://hi.baidu.com/hivemind/item/8ff435c20709f9360831c664