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の5つの構築方法
構築方法
XMemcachedClientBuilder(List/Map address,int[] weight)
Addressは次のことができます.
Weight serversに対応するノードの重み
Weightはあってもなくてもいい
Weight値が大きいと重みが大きい、そうでないと小さい
Xmemcachedでは、ノードの重みを設定することでmemcachedの負荷を調整できます.設定された重みが高いほど、memcachedノードに格納されているデータが多くなり、負荷が大きくなります.xmemcachedの重みは、接続された複数の参照をコピーすることによって実現され、例えば重みが3である場合、同じ接続をコピーした3つの参照をセットに配置してMemcachedSessionLocatorに検索させる.
ノードのウェイト値を変更するには、setServer Weightメソッドを使用します.
int配列が入力され、その要素はノードに対応する重み値です.たとえば、ここで「10.180.44.224:1212」ノードの重みを1に設定し、「zhouxq:1211」の重みを3に設定します.
XmemcachedClient()とXmemcachedClientBuilderは同じです.
接続プールのサイズの設定
接続プールは通常、あまり大きく設定することをお勧めしません.0-30の間で設定することをお勧めします.大きすぎるとシステムリソースを浪費し、小さすぎて負荷を分担する目的を達成できません.
失敗モードを設定サービスがダウンした場合、サービスが正常になるまで異常が表示されます.
バイナリ・ファイルの使用
7、
データを格納するにはsetメソッドで、3つのパラメータがあります.1つ目は格納されたkey名、2つ目はexpire時間です.
(単位秒)、この時間を超えるとmemcachedはこのデータを置き換え、0は永久記憶(デフォルトは1ヶ月)を表し、3番目のパラメータは実際に記憶されたデータであり、任意のjavaシーケンス化可能なタイプであってもよい.
someObject=memcachedClient.get("key",3000);後ろの対応は
ミリ秒
タイムアウト後に得られたkeyに対応する値はnull
8.Springフレームワークとの統合
XM M e m cachedClientFactoryBeanクラスによりspringフレームワークと統合
テストコード
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();
}
}
}