2011-12-06 4 views
0

私はmemcachedでいくつかのチュートリアルを読んで、デフォルトのデータベースへのリクエストの苦痛を和らげるためにいくつか質問があります。は別の仮想オペレーティングシステムをインスタンス化するだけでmemcachedですか?

memcachedを動作させるためにインスタンス化されているものは何ですか?
mysqlがインストールされている、またはデータベース全体がramに格納されているという仮想オペレーティングシステムですか?

私はブログを持ち、memcacheを使用していて、ユーザーがブラウザからデータを要求すると、その要求はまずMemcacheでデータがチェックされ、そのデータが存在し、そのユーザーに表示されます。

私が自分で更新したため、要求されたデータが元のデータベースのものと一致しない場合はどうなりますか?キャッシュは、私がそれを変更したことをどのように知るでしょうか?
dbのデータがキャッシュされているデータと同じかどうかを常にチェックしていますか?

+0

実際にあなた自身の質問を理解できますか? – Macmade

答えて

0


あなたはmemcachedのに専念するためのメモリの量を割り当て、あなたが必要とするすべてのマシンでmemcachedサーバを起動します。
次にmemcachedライブラリを使用して、すべての単一サーバー上のメモリ量を使用します。
NBどのサーバーに1つのオブジェクトを格納するかを知る方法はありません。


重複のメカニズムは簡単です:あなたがオブジェクトのタイムアウトを設定することができます。タイムアウトが経過すると、システムはそのオブジェクトを削除します。
オブジェクトを保存するには、2つのオブジェクトが同じキーを持つことを望まないため、そのオブジェクトにハッシュとしてキーを割り当てます。 the memcached front-pageから

+0

削除するのではなく、タイムアウトすると無効とフラグが設定され、**上書きされる可能性がありますが、期限切れでは削除されません。 – StormByte

0

Memcachedのデータベース呼び出し、API呼び出し、またはページのレンダリングの結果から任意のデータの小さなチャンク(文字列、オブジェクト)のためにメモリ内のキーと値のストアです。

memcachedはMySQLで頻繁に使用されますが、MySQLやその他のデータベースとの特別な関係はありません。これは、キーでキャッシュされたデータへの一定時間(O(1))アクセスを提供する単純なキー値ストアです。データはmemcachedプロセスによってメモリに格納されます。 (これの多くはon the FAQで説明されています)。

2番目の質問に関しては、memcachedに変更が通知されていることを確認するのは実際のアプリケーション/ユーザーの責任です。これは、キャッシュされたデータの合理的な有効期限を過ぎるか、またはスクリプトやコマンドラインインターフェイスを使用して古くなったエントリを手動で削除することによって実行できます。いくつかのフレームワークは、変更がフレームワークを通じて行われた場合、memcachedに変更の通知を処理します。最終的に、ユーザーが常にリアルタイムで最新のデータにアクセスできるようにする必要がある場合、キャッシュは問題の良い解決策ではありません。キャッシングは古くなったデータをキャッシュするようにアプリケーションを構築する必要がありますが、常にが新鮮でなければならないデータの信頼できるソースにルックアップを使用するようにアプリケーションを構築する必要があります。