1

キャッシュを複数のサーバーに分散しようとしています。2台のLinuxサーバーにMemcachedをインストールしました。これらのサーバーのキャッシュを操作するために.Netクライアントライブラリを使用しています。

構成から最初のサーバーに常に値を格納します。サーバーの順序を変更しようとしましたが、リストの最初にのみ保存されます。

Puttyを使用して、サーバーにオブジェクトが存在するかどうかを確認します。

質問は次のとおりです。

オブジェクトを両方のサーバーに同時に保存するにはどうすればよいですか?

このオブジェクトが構成ファイルからすべてのサーバーに保存されていることを確認したい場合

クライアントライブラリからそれを行うにはどうすればよいですか?

これが私のコードの例です:

static void Main(string[] args)
{ 
     var mc = new MemcachedClient();
     mc.FlushAll();
     mc.Store(StoreMode.Add, "key1", "some information");            
     Console.WriteLine(mc.Get("key1"));
}

および構成

<enyim.com>
    <memcached>
      <servers>
        <add address="20.23.24.105" port="11211"/>
        <add address="20.23.24.106" port="11211"/>
      </servers>
      <socketPool minPoolSize="10" maxPoolSize="100" connectionTimeout="00:10:00" deadTimeout="00:02:00"/>
    </memcached>
  </enyim.com>
4

1 に答える 1

2

.NET クライアントでこれを行うことはできないと思います。これは Memcached の動作方法ではないためです。内部的に、クライアントは各キーを 1 つのサーバーのみにハッシュします。そのサーバーがダウンした場合、クライアントは将来のキーをハッシュするときにそれを考慮します。ただし、これを回避する 1 つの方法は、サーバーごとに個別のセットを作成することです。これには、各サーバーに 1 つずつ接続された 2 つのクライアントを作成し、要求を 2 回送信する必要があります。.NET クライアントが非同期セットを提供している場合は、2 つのセット操作のうち最長の待ち時間だけでこれを行うことができます。

于 2012-11-06T05:53:59.720 に答える