Java的Memcached客戶端

 
1.memcached client for java
http://www.whalin.com/memcached

Java代碼 複製代碼 收藏代碼
  1. import com.danga.MemCached.*;   
  2. import org.apache.log4j.*;   
  3. public class TestMemcached {   
  4.     public static void main(String[] args) {   
  5.         /*初始化SockIOPool,管理memcached的連接池*/  
  6.         String[] servers = { "192.168.1.20:12111" };   
  7.         SockIOPool pool = SockIOPool.getInstance();   
  8.         pool.setServers(servers);   
  9.         pool.setFailover(true);   
  10.         pool.setInitConn(10);   
  11.         pool.setMinConn(5);   
  12.         pool.setMaxConn(250);   
  13.         pool.setMaintSleep(30);   
  14.         pool.setNagle(false);   
  15.         pool.setSocketTO(3000);   
  16.         pool.setAliveCheck(true);   
  17.         pool.initialize();   
  18.         /*建立MemcachedClient實例*/  
  19.         MemCachedClient memCachedClient = new MemCachedClient();   
  20.         for (int i = 0; i < 10; i++) {   
  21.             /*將對象加入到memcached緩存*/  
  22.             boolean success = memCachedClient.set("" + i, "Hello!");   
  23.             /*從memcached緩存中按key值取對象*/  
  24.             String result = (String) memCachedClient.get("" + i);   
  25.             System.out.println(String.format("set( %d ): %s", i, success));   
  26.             System.out.println(String.format("get( %d ): %s", i, result));   
  27.         }   
  28.     }   
  29. }  
import com.danga.MemCached.*;
import org.apache.log4j.*;
public class TestMemcached {
    public static void main(String[] args) {
        /*初始化SockIOPool,管理memcached的連接池*/
        String[] servers = { "192.168.1.20:12111" };
        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();
        /*建立MemcachedClient實例*/
        MemCachedClient memCachedClient = new MemCachedClient();
        for (int i = 0; i < 10; i++) {
            /*將對象加入到memcached緩存*/
            boolean success = memCachedClient.set("" + i, "Hello!");
            /*從memcached緩存中按key值取對象*/
            String result = (String) memCachedClient.get("" + i);
            System.out.println(String.format("set( %d ): %s", i, success));
            System.out.println(String.format("get( %d ): %s", i, result));
        }
    }
}


2.spymemcached
http://code.google.com/p/spymemcached/

用spymemcached將對象存入緩存
Java代碼 複製代碼 收藏代碼
  1. import java.net.InetSocketAddress;   
  2. import java.util.concurrent.Future;   
  3.   
  4. import net.spy.memcached.MemcachedClient;   
  5.   
  6. public class MClient {   
  7.   
  8.     public static void main(String[] args){   
  9.         try{   
  10.             /*建立MemcachedClient 實例,並指定memcached服務的IP地址和端口號*/  
  11.             MemcachedClient mc = new MemcachedClient(new InetSocketAddress("192.168.1.20"12111));   
  12.             Future<Boolean> b = null;   
  13.             /*將key值,過期時間(秒)和要緩存的對象set到memcached中*/  
  14.             b = mc.set("neea:testDaF:ksIdno"900"someObject");   
  15.             if(b.get().booleanValue()==true){   
  16.                 mc.shutdown();   
  17.             }   
  18.         }   
  19.         catch(Exception ex){   
  20.             ex.printStackTrace();   
  21.         }   
  22.     }   
  23. }  
import java.net.InetSocketAddress;
import java.util.concurrent.Future;

import net.spy.memcached.MemcachedClient;

public class MClient {

    public static void main(String[] args){
        try{
            /*建立MemcachedClient 實例,並指定memcached服務的IP地址和端口號*/
            MemcachedClient mc = new MemcachedClient(new InetSocketAddress("192.168.1.20", 12111));
            Future<Boolean> b = null;
            /*將key值,過期時間(秒)和要緩存的對象set到memcached中*/
            b = mc.set("neea:testDaF:ksIdno", 900, "someObject");
            if(b.get().booleanValue()==true){
                mc.shutdown();
            }
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
}

用spymemcached從緩存中取得對象
Java代碼 複製代碼 收藏代碼
  1. import java.net.InetSocketAddress;   
  2. import java.util.concurrent.Future;   
  3.   
  4. import net.spy.memcached.MemcachedClient;   
  5.   
  6. public class MClient {   
  7.   
  8.     public static void main(String[] args){   
  9.         try{   
  10.             /*建立MemcachedClient 實例,並指定memcached服務的IP地址和端口號*/  
  11.             MemcachedClient mc = new MemcachedClient(new InetSocketAddress("192.168.1.20"12111));   
  12.             /*按照key值從memcached中查找緩存,不存在則返回null */  
  13. Object b = mc.get("neea:testDaF:ksIdno ");   
  14.             mc.shutdown();   
  15.         }   
  16.         catch(Exception ex){   
  17.             ex.printStackTrace();   
  18.         }   
  19.     }   
  20. }  
import java.net.InetSocketAddress;
import java.util.concurrent.Future;

import net.spy.memcached.MemcachedClient;

public class MClient {

    public static void main(String[] args){
        try{
            /*建立MemcachedClient 實例,並指定memcached服務的IP地址和端口號*/
            MemcachedClient mc = new MemcachedClient(new InetSocketAddress("192.168.1.20", 12111));
            /*按照key值從memcached中查找緩存,不存在則返回null */
Object b = mc.get("neea:testDaF:ksIdno ");
            mc.shutdown();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
}


以上兩種API比較
memcached client for java:較早推出的memcached JAVA客戶端API,應用廣泛,運行比較穩定。
spymemcached:A simple, asynchronous, single-threaded memcached client written in java. 支持異步,單線程的memcached客戶端,用到了java1.5版本的concurrent和nio,存取速度會高於前者,但是穩定性不好,測試中常報timeOut等相關異常。
由於memcached client for java發佈了新版本,性能上有所提高,並且運行穩定,所以建議使用memcached client for java.

3. Xmemcached
http://code.google.com/p/xmemcached/
引用

Xmemcached是基於java nio實現的高性能可擴展的memcached客戶端。

實際上是基於我實現的一個nio框架 http://code.google.com/p/yanf4j/的基礎上實現的(目前1.1.3是基於yanf4j 0.7.0,而1.2.0-RC1版本基於1.0-SNAPSHOT)。
發佈了36 篇原創文章 · 獲贊 5 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章