タグ付けされた質問 「memcached」

2
共有キャッシュ-無効化のベストプラクティス
キャッシュオブジェクトを無効化/更新するためのより良いアプローチは何か知りたいです。 前提条件 リモートmemcachedサーバーを持つ(複数のアプリケーションのキャッシュとして機能する) すべてのサーバーはAzure(アフィニティリージョン、同じデータセンター)によってホストされます キャッシュオブジェクトのサイズは200バイトから50キロバイトまでの範囲です アプローチ1(できるだけ早くキャッ​​シュに保存) オブジェクトAが作成されます->データベースに保存し、キャッシュに保存します クライアントによって要求されたオブジェクトA->キャッシュの存在をチェック、そうでなければデータベースからフェッチしてキャッシュに保存 オブジェクトAが更新されます->データベースに保存、キャッシュに保存 アプローチ1はより簡単なようです。何かが作成されたら、できるだけ早くキャッ​​シュに入れてください。誰かに関係なくそれが必要になります。 アプローチ2(遅延キャッシュストア) オブジェクトAが作成されます->データベースに保存 クライアントによって要求されたオブジェクトA->キャッシュの存在をチェック、そうでなければデータベースからフェッチしてキャッシュに保存 オブジェクトAが更新されます->データベースに保存、キャッシュのキーを削除 アプローチ2は、より多くのメモリを認識しているようです。このアプローチでは、リクエストされたアイテムのみがキャッシュに保存されます。 質問1:パフォーマンスを考慮して、より良いアプローチは何でしょうか?メモリもCPUもまだカウントされません。 質問2:私の考えは一種の時期尚早な最適化ですか? 質問3:他に考えはありますか?他のアプローチ?

2
Memcachedの使用:データベースを更新するときにキャッシュを更新することをお勧めしますか?
この質問は、アーキテクチャのベストプラクティスに関するものです。 現在のアーキテクチャ ユーザー情報のためにMySQLにアクセスするPHPクラスがあります。それを呼び出しましょうUser。 Userに何度もアクセスされるため、負荷を軽減するためにキャッシュのレイヤーを実装しました。 最初のレイヤーは、「リクエストごと」キャッシュと呼ばれるものです。MySQLからデータを取得した後、データをのプライベートプロパティに保存しますUser。データに対する後続のリクエストは、MySQLからデータを再リクエストする代わりにプロパティを返します。 Webリクエストはリクエストごとに存続および終了するため、このキャッシュは、アプリケーションが1回のリクエストでMySQLに複数回アクセスすることを防ぎます。 2番目のレイヤーはMemcachedです。プライベートプロパティが空の場合、最初にMemcachedでデータを確認します。Memcachedが空の場合、MySQLにデータを照会してMemcachedを更新し、のプライベートプロパティを更新しますUser。 質問 私たちのアプリケーションはゲームであり、いくつかのデータが可能な限り最新であることが不可欠な場合があります。約5分間で、ユーザーデータの読み取り要求が10回または11回発生する場合があります。その後、更新が行われる場合があります。後続の読み取り要求は最新である必要があります。そうしないと、ゲームの仕組みが失敗します。 そのため、データベースの更新が発生したときに実行されるコードを実装しました。このコードは、更新されたデータを使用してMemcachedのキーを設定するため、Memcachedへの後続のリクエストはすべて最新です。 これは最適ですか?このような「リビングキャッシュ」のようなものを維持しようとするとき、パフォーマンスの問題やその他の「注意点」を知っておく必要がありますか?

2
キーベースのキャッシュはどのように機能しますか?
37Signalsブログの記事を最近読んだところ、キャッシュキーがどのように取得されるのか疑問に思いました。 オブジェクトのタイムスタンプを含むキャッシュキーがあれば十分です(つまり、オブジェクトを更新するとキャッシュが無効になります)。しかし、キャッシュからフェッチしようとしているオブジェクトそのものにDBヒットを引き起こさずに、テンプレートでキャッシュキーをどのように使用しますか。 具体的には、これにより、たとえば投稿のコメントをレンダリングする1対多の関係にどのように影響しますか。 Djangoでの例: {% for comment in post.comments.all %} {% cache comment.pk comment.modified %} <p>{{ post.body }}</p> {% endcache %} {% endfor %} Railsでのキャッシュは、たとえばmemcachedへの単なるリクエストとは異なります(キャッシュキーを別のものに変換することは知っています)。キャッシュキーもキャッシュしますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.