xmemcached学習ノート


Xmemcached学習整理
1、まずserverを起動する:対応するディレクトリの下memcachedに対応する.exe –start
2、slf 4 jに依存する.jarパッケージ、slf 4 jをダウンロードD:libraryslf 4 j-1.5.5slf 4 j-simple-1.5.5.jar
D:libraryslf 4 j-1.5.5slf 4 j-simple-1.5.5.JArはclasspathパスの下に置く
3、Memcacheは初めてメモリにデータを入れます.実行するたびにデータが変わらなければ更新せず、メモリから直接取ります.
4、serverが停止した場合、メモリに存在するデータは消失する
5、置換キーに対応する数値
   Replace(“key”,”value”);

MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("10.180.44.224:11211 zhouxq:11211"),new int[]{1,3});

MemcachedClientBuilderの5つの構築方法
構築方法
XMemcachedClientBuilder(List/Map address,int[] weight)
Addressは次のことができます.

java.util.Map<java.net.InetSocketAddress,java.net.InetSocketAddress> addressMap
java.util.List<java.net.InetSocketAddress> addressList 

Weight serversに対応するノードの重み
Weightはあってもなくてもいい
Weight値が大きいと重みが大きい、そうでないと小さい
Xmemcachedでは、ノードの重みを設定することでmemcachedの負荷を調整できます.設定された重みが高いほど、memcachedノードに格納されているデータが多くなり、負荷が大きくなります.xmemcachedの重みは、接続された複数の参照をコピーすることによって実現され、例えば重みが3である場合、同じ接続をコピーした3つの参照をセットに配置してMemcachedSessionLocatorに検索させる.
ノードのウェイト値を変更するには、setServer Weightメソッドを使用します.

  public void setServerWeight(String server, int weight);

int配列が入力され、その要素はノードに対応する重み値です.たとえば、ここで「10.180.44.224:1212」ノードの重みを1に設定し、「zhouxq:1211」の重みを3に設定します.
XmemcachedClient()とXmemcachedClientBuilderは同じです.
接続プールのサイズの設定

   builder.setConnectionPoolSize(5);

接続プールは通常、あまり大きく設定することをお勧めしません.0-30の間で設定することをお勧めします.大きすぎるとシステムリソースを浪費し、小さすぎて負荷を分担する目的を達成できません.
失敗モードを設定サービスがダウンした場合、サービスが正常になるまで異常が表示されます.

builder.setFailureMode(true);

バイナリ・ファイルの使用
builder.setCommandFactory(new BinaryCommandFactory()); 

7、
データを格納するにはsetメソッドで、3つのパラメータがあります.1つ目は格納されたkey名、2つ目はexpire時間です.
(単位秒)、この時間を超えるとmemcachedはこのデータを置き換え、0は永久記憶(デフォルトは1ヶ月)を表し、3番目のパラメータは実際に記憶されたデータであり、任意のjavaシーケンス化可能なタイプであってもよい.

Thread  t = new Thread();
		 t.start();
		 t.sleep(3000);
	// memcached  key   value,    3 

someObject=memcachedClient.get("key",3000);後ろの対応は
ミリ秒
タイムアウト後に得られたkeyに対応する値はnull
8.Springフレームワークとの統合
XM M e m cachedClientFactoryBeanクラスによりspringフレームワークと統合
テストコード

package com.test.xmemcache;

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 XmemcacheTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("10.180.44.224:11211 zhouxq:11211"),new int[]{1,3});
		try {
			MemcachedClient memcachedClient = builder.build();
			memcachedClient.set("hello", 1, "Hello,xmemcached");
			String Value=memcachedClient.get("hello",3000); //
			System.out.println("hello=" + Value);
//			memcachedClient.flushAll();
			memcachedClient.replace("hello",1, "zhouxq");
			System.out.println(memcachedClient.get("hello"));
//			memcachedClient.deleteWithNoReply("hello"); //  
			System.out.println(memcachedClient.get("hello"));
//			memcachedClient.delete("hello"); //  
//			Value = memcachedClient.get("hello");
//			System.out.println("hello=" + Value);
			
			memcachedClient.set("key",2,"someObject");
			// memcached  key   value
			Object someObject=memcachedClient.get("key");
			
			 Thread  t = new Thread();
			 t.start();
			 t.sleep(1000);
			// memcached  key   value,    3 
			someObject=memcachedClient.get("key",1000);
			System.out.println(someObject);
			
			
			memcachedClient.shutdown();
			
		} catch (MemcachedException ex) {
			System.err.println("MemcachedClient operation fail");
			ex.printStackTrace();
		} catch (TimeoutException xe) {
			System.err.println("MemcachedClient operation timeout");
			xe.printStackTrace();
		} catch (InterruptedException e) {
			// ignore
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}