1

現在、CakePHP アプリケーションで Apc キャッシュを使用しています。個別に読み取り、更新、上書きできる個別のオブジェクトとしてキャッシュしたい何千ものリストがあります。次に、listing_ids のグループを個別にキャッシュします。ロードするべき listing_ids のグループ化を計算するための高価な場所ベースの計算がいくつかあります (これはマップ アプリケーションです)。そのため、listing_ids のこのリストをキャッシュする必要があります。

リスト データは、ダッシュボードから更新および保存することもできます。キャッシュは、特定のリストを保存するまでうまく機能します。保存すると、キャッシュされたすべてのデータが無効になります。マップに戻ってリスティングのグループを読み込むと、それらのリスティングはキャッシュされていません。

実装に関する詳細:

  • 私がlisting_idsのリストと個々のリストデータの両方に使用している私のキャッシュ設定:

Cache::config('Config1', array(

            'engine' => 'Apc', 
            'duration'=> 10000000, 
            'probability'=> 100, 
            'path' => CACHE, 
            'prefix' => 'cake_', 
            'lock' => false, 
            'serialize' => true, 
            'mask' => 0666,
    ));
  • マップの読み込み時に個々のリスティング キャッシュを初期化するには、次のように、データベースから返されたリスティングを繰り返し処理し、それぞれの listing_id を末尾に追加してキャッシュします。

    Cache::write('Listing-'.$id, $listing, 'Config1');

  • 私は、listing_ids のグループが正しく保存されていることを確認できました。上記の行は、前述のようにダッシュボードのリストを更新するときに使用されるものと同じです。

私の目標 - キャッシュ内の特定の 1 つのリストを更新し、残りのキャッシュされたリストには触れないこと。簡単な作業のように思えますが、調査に数時間を費やしましたが、解決策を見つけることができませんでした。

4

1 に答える 1

1

すでに行っているように、特定のレコードを書き換えるだけです

Cache::write('Listing-'.$id, $listing, 'Config1');
于 2013-11-15T23:20:53.807 に答える