この質問のタイトルは混乱するかもしれませんが、問題は簡単です。Zend_cacheをmemcachedで分散して使用するには?
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とserver2はキャッシュから同じ値を引き続き使用しますが、server1はキャッシュをリフレッシュしようとします。
私はそれを行うためのコードを書くことができますが、Zend_Cacheで直接行う方法があるのだろうかと思っていましたか?私の問題に適用できるデザインパターンがあれば?
[EDIT]私は100台のサーバー
問題はクエリが「カテゴリ」であり、数十万のカテゴリがあり、カテゴリごとに2つのクエリがあります。+毎日訪問していないカテゴリを更新するという事実です。 – zzarbi