8

I'm looking into using MemCached for a web application I am developing and after researching MemCached over the past few days, I have come across a question I could not find the answer to.

How do you link Memcached server together or how do you replicate data between MemCached server?

Additionally: Is this functionality controlled by the servers or the clients and how?

4

6 に答える 6

7

複数のサーバーを設定する場合、クライアントライブラリは最初のハッシュを使用して、各キー/データペアを格納する場所を1つ選択します。つまり、レプリケーションはなく、すべてのクライアントが同じサーバーのセットを使用する必要があります。

長所:

  • オーバーヘッドはほぼゼロで、ストレージと帯域幅は直線的に増加します。
  • サーバーコードはシンプルで信頼性が高く保たれています。

短所:

  • サーバーのセットを変更すると(1つがダウンするか、新しいサーバーを追加すると)、キャッシュ全体が突然(ほぼ)無効になります。
  • すべてのクライアントで同じアルゴリズムを使用する必要があります。

クライアントのコードを制御できる場合は、各キーとデータのペアを2台のサーバーに2回保存するだけです。別のクライアントから読むときは、必ず同じ場所で検索してください。

于 2008-12-09T12:16:14.757 に答える
2

http://repcached.lab.klab.org/

また、PHP PECL memcache クライアントはデータを複数のサーバーに複製できます。memcache.redundancy を参照してください。

于 2009-03-02T15:21:55.670 に答える
1

もしそうなら、マシンの再起動などに対応できるキャッシュが必要なようですね…</p>

多くの場合 (あなたが Facebook を書いているのではないと仮定して)、RDMS はキャッシングに十分な速さです。キーと blob 列を持つテーブルを作成するだけです。RDBS サーバーに十分な RAM がある場合、すべてのデータは RAM にあり、復元できるようにディスクに保存されます。

これは、メインのデータベース サーバーとは別のサーバーである可能性があることに注意してください。

ハイエンドの RDMS を使用している場合は、キャッシュから期限切れの行を削除する「キャッシュ データ」を作成するために使用されるクエリに変更通知を設定できます。

トリガーを設定してキャッシュから無効な行をクリアできる人もいますが、これは非常に複雑になる可能性があります。

于 2009-02-27T10:41:10.580 に答える
0

CouchBaseを真剣に検討する必要があります。memcached プロトコルを使用し、ほぼ同じ速度を提供し、探している自動レプリケーションを実現します。また、ディスクに保持されるため、キャッシュがコールドになることはありません。

于 2012-06-15T12:43:03.043 に答える
0

Memcached はレプリケーション プロパティを提供しません。そのためには、サーバーを memcached クライアント サーバー リストに追加してから、その特定のサーバーに格納されるデータの DB にアクセスする必要があります。

于 2012-06-15T06:39:24.760 に答える