JAva memcachedの使用

6135 ワード

目次
Memcachedとは?
JAvaはmemcachedクライアントをどのようにリンクしますか?
1.java memcached client
1.1 memcachedのjar関連jarパッケージのインポート
1.2 memcachedクライアントへの接続プログラムの作成
1.3 MemCachedClientのapi
2.Xmemcached
2.1 xmemcachedとslf 4 jをインポートするjarパッケージ
2.2接続プログラムの作成
3.SpyMemcached
3.1 SpyMemcachedのjarパッケージのインポート
3.2接続プログラムの作成
まとめ:
Memcachedとは?
Memcachedは、フリー・オープン・ソース、高性能、分散メモリ・オブジェクト・キャッシュ・システムです.
1.Memcachedは、メモリベースのkey-valueストレージであり、小さなブロックの任意のデータ(文字列、オブジェクト)を格納するために使用されます.これらのデータは、データベース呼び出し、API呼び出し、またはページレンダリングの結果であってもよい.
2.Memcachedは簡潔で強力です.その簡潔な設計は迅速な開発に便利で、開発の難易度を軽減し、ビッグデータ量キャッシュの多くの問題を解決した.そのAPIは大部分の流行の開発言語と互換性がある.一般的な使用目的は、データベースクエリーの結果をキャッシュすることによって、データベースへのアクセス回数を減らし、動的Webアプリケーションの速度を向上させ、拡張性を向上させることです.
 
JAvaはmemcachedクライアントをどのようにリンクしますか?
1.java memcached client
1.1 memcachedのjar関連jarパッケージのインポート
  • ダウンロードアドレス 
  • 現在java memcached clientには公式のmaven repositoryが使用できないため、使用時に手動でローカルrepositoryにインストールする必要があります.ダウンロードしたmemcachedを解凍し、pomファイルを作成し、memcachedに必要な他のjarパッケージを参照し、memcachedのjarを自分のmaven倉庫にインストールします.インストール文:mvn install:install-file-Dfile=F:memcachedjava_memcached-release_2.6.6.jar -DpomFile=F:\memcached\pom.xml

  • pomファイルの内容
      
      
     4.0.0
      com.hello
      memcached
      2.6.6
      war  
      
         
    	   com.danga  
    	  java-memcached  
    	  2.6.6 
       
        
        org.slf4j  
        slf4j-simple  
        1.6.1  
        
        
        org.slf4j  
        slf4j-api  
        1.6.1  
        
        
        commons-pool  
        commons-pool  
        1.5.6  
        
      
    

    1.2 memcachedクライアントへの接続プログラムの作成
    
    import com.danga.MemCached.MemCachedClient;
    import com.danga.MemCached.SockIOPool;
    
    public class Test {
    	public static void main(String[] args) {
    
    		MemCachedClient cachedClient = new MemCachedClient();
    		//      
    		SockIOPool sockIOPool = SockIOPool.getInstance();
    
    		//      
    		String servers[] = new String[] { "127.0.0.1:11211" };
    		sockIOPool.setServers(servers);
    		//      
    		sockIOPool.setMaxConn(50);
    		//      
    		sockIOPool.setMinConn(10);
    		//       
    		sockIOPool.setInitConn(20);
    		//           ,       
    		sockIOPool.setMaintSleep(3000);
    		// Socket           
    		sockIOPool.setSocketConnectTO(3000);
    		// Socket           
    		sockIOPool.setSocketTO(3000);
    		//    true        ,      
    		sockIOPool.setNagle(false);
    		sockIOPool.initialize();
    		
    		if (cachedClient != null) {//  null,       
    			boolean flag = cachedClient.set("hello", "world");
    			System.out.println(flag);//  true     
    			//  key hello  
    			System.out.println(cachedClient.get("hello"));
    		}
    	}
    }
    

    1.3 MemCachedClientのapi
                //   (  key  ,   ,   ,   )
    			cachedClient.set("hello", "world", new Date(3000));
    			//   (key     false)
    			cachedClient.set("nihao", 100);
    			//  
    			cachedClient.replace("nihao", 1000);
    			//   
    			Object object = cachedClient.get("hello");
    			//     
    			Map objects = cachedClient.getMulti(new String[] {"nihao","hello"});
    			//         
    			cachedClient.storeCounter("count", 10L);
    			//        
    			cachedClient.addOrDecr("count");
    			//        
    			cachedClient.addOrIncr("count");
    

    2.Xmemcached
    2.1 xmemcachedとslf 4 jをインポートするjarパッケージ
    2.2リンクプログラムの作成
    apiとjava memcached clientの差は多くない
    import java.io.IOException;
    import java.util.concurrent.TimeoutException;
    
    import net.rubyeye.xmemcached.MemcachedClient;
    import net.rubyeye.xmemcached.MemcachedClientBuilder;
    import net.rubyeye.xmemcached.XMemcachedClientBuilder;
    import net.rubyeye.xmemcached.exception.MemcachedException;
    import net.rubyeye.xmemcached.utils.AddrUtil;
    
    public class Test2 {
    	public static void main(String[] args)
    			throws IOException, TimeoutException, InterruptedException, MemcachedException {
    		MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("127.0.0.1:11211"));
    		MemcachedClient client = builder.build();
    		Object object = client.get("hello");
    		System.out.println(object);
    	}
    }

    3.SpyMemcached
    3.1 xmemcachedとslf 4 jをインポートするjarパッケージ
    3.2リンクプログラムの作成
    import java.io.IOException;
    import java.net.InetSocketAddress;
    
    import net.spy.memcached.MemcachedClient;
    
    public class Test3 {
    	public static void main(String[] args) throws IOException {
    		MemcachedClient memcacheCient = new MemcachedClient(new InetSocketAddress("127.0.0.1", 11211));
    	
    	}
    }
    

    まとめ:
    memcachedの特徴:
  • フルメモリ運転
  • ハッシュ方式記憶
  • 単純テキストプロトコルによるデータ通信
  • 文字型データ
  • のみ操作
  • 他のタイプのデータは、アプリケーションによって解釈され、シーケンス化され、逆シーケンス化された
  • である.
  • クラスタもアプリケーションによって制御され、コンシステンシハッシュアルゴリズム
  • を採用する.
    Memcachedの欠点
  • 純メモリ操作、シャットダウン後のデータはすべて失われた
  • はバイトデータを保存し、データ型は
  • に乏しい.
  • LRUアルゴリズムは、データの制御不能な損失をもたらす
  • 整合性処理単純
  • アプリケーション側が厚すぎて、サーバ側が薄すぎる
  • アプリケーションシーンは限られており、完全なデータベース製品と見なすことは困難である
  • APIの実装概要
    Java Memcache Client for Javaアプリケーションは最も広く、現在最も安定しているクライアントでもあり、オンラインシステムではこのクライアントが大量に使用されています.特徴:比較的に早く出したmemcached JAVAクライアントAPI、応用が広くて、運行が比較的に安定して、ブロックIOを使って、CAS操作をサポートしません.
    SpyMemecache Java NIOベースのクライアントは、アクセス速度が前者より高くなりますが、安定性が悪く、テスト中にtimeOutなどの関連異常が報告され、CAS操作をサポートします.
    Xmemcachedは同様にJava NIOベースのクライアントであり、Java NIOは従来のブロックIOモデルに比べて効率が高く(特に高合併下)、リソース消費が比較的少ないという利点がある.