この質問のタイトルは紛らわしいかもしれませんが、問題は単純です。
memcachedをバックエンドとしてZend_Cacheを使用しています。「最後の記事」と「人気の記事」という2つのモジュールがあります。このモジュールは両方ともすべてのページにあり、次のような同様のクエリを使用します。
Select * from table where status = 'published' and category = '' order by dateCreated|/popularity\
私のテーブルにはこれまでに150万行あります。前のクエリで使用しているすべてのフィールドにインデックスがあります。最近の記事を1時間キャッシュし、人気のある記事を4時間キャッシュします。4つのWebサーバー(php5 / apache2)と1つのデータベースサーバー(mysql)があります。テーブルエンジンはinnoDBです。
この問題は、負荷が高い途中でキャッシュが期限切れになり、それらのモジュールが再びキャッシュされるまでWebサイトが使用できなくなる場合があります。私は新しいMYSQLサーバーを持つことができました。
しかし、よりスマートな方法でキャッシュを処理する方法はありますか?たとえば、server1はキャッシュを更新しようとしますが、サーバー2、3、4はキャッシュから同じ値を使用します。
それを行うためのコードを書くことはできますが、Zend_Cacheを使用して直接それを行う方法があるかどうか疑問に思っていました。問題に適用できるデザインパターンがある場合はどうなりますか?
[編集]100台のサーバーにスケールアップできるものが欲しい