0

AWSのElasticacheツールでmemcachedクラスタを作成しました。Memcached AWSクラスタが同じノードにキーを保持しない

私のプログラムはすべての呼び出しで、キーをデータキャッシュとともにキャッシュし、サーバーを呼び出すたびにデータを更新します。しかし、それをクラスタでテストしている間に、キーがあるノードを変更しているか、それを消去しているように見えるので、ノードを変更したりキーを消去した瞬間、以前の情報は失われます。すべてのクラスタの1つのエンドポイントを呼び出すと、キーの内容をクラスタ上に保持し、キーの内容を削除したり、キーを再起動したりしてはいけません。

memcachedクラスターの構成パラメーターは、キーの参照ノードを変更しないように強制しますか?

私はhttp://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/ParameterGroups.Memcached.htmlで設定パラメータを見て、私はこの問題を解決する方法に関連するヒントを教えてくれていないのですが、AWSファイルdefault.memcached1.4のデフォルト設定パラメータを使用しています。 (Pd。自分のプログラムを特定のノードに直接指していると、すべて正常に動作します)

答えて

2

それはそうである方法です。

次の図は、標準的なMemcachedと典型的な Redisクラスタを示しています。 Memcachedクラスタには、データを水平方向に分割できる に1〜20のノードが含まれています。 http://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/Clusters.html

からRedisの

django documentationは似た何かを言います。

Memcachedの優れた機能の1つは、複数のサーバーにキャッシュ を共有する機能です。あなたができない、これはあなたが 複数のマシン上でMemcachedのデーモンを実行することができることを意味し、そしてプログラムは、各 マシン上言い換えれば

をキャッシュ値を複製することなく、単一のキャッシュ としてマシンのグループを扱いますクラスタ内の任意のノードから直接データを要求します。あなたはdjangoのキャッシュAPIがデータの取得方法を理解できるようにする必要があります。

redisの場合、動作は逆です。クラスタに書き込むと、クラスタ内の任意のノードにデータを問い合せることができます。そのノードは、すべてのノードに複製されるためです。 memcacheのように、それは断片化されています。

+0

しかし私は同じキーの整合性を保つためにmemcachedを期待していました。同じノードの情報を同じノードに分散していても、それは私に1つのユニークなキーを戻し、異なるノードのキー?レディスについて:レディスクラスターは、データを複製するだけで、提案を書くためにキャッシュのサイズを拡大しませんか? – chuseuiti

+0

それは正しいです。 1つの1GBのredisキャッシュをクラスタリングすると、合計ストレージ容量は1GBになります。 10個のmemcachedキャッシュがクラスタリングされている場合、ストレージは10GBです。異なるキャッシュを持つ異なるキャッシュがあります。あなたはいずれかのキャッシュに直接行くはずではありませんが、トップレベルのAPIがあなたに向かうキャッシュを決めることになっています。 – e4c5

関連する問題