Zend Cache (APC バックエンド) の使用を開始しましたが、毎回データベースにアクセスするのではなく、キャッシュされた値を返すという点ですべてがうまくいっています。ただし、私の問題は次のとおりです。
$cache_key = 'getrebates_'.$operator_code;
if(PP_Model_CacheService::exists($cache_key)) {
$cached_values = PP_Model_CacheService::load($cache_key);
} else {
//hits the db
$cached_values = $this->getAll($operator_code);
PP_Model_CacheService::save($cached_values, $cache_key);
}
return $cached_values;
各オペレーターには、オペレーターによって異なる独自のリベートがあります。データベースを変更して、すべてのオペレーターのリベートをクリアする必要がある場合、どうすればよいですか?
$Cache->clean()を使用できますが、これにより他のキャッシュがクリアされます (各オペレーターのリベート キャッシュだけではありません)。すべての演算子をループすると:
foreach($operator_codes AS $operator_code) {
$cache_key = 'getrebates_'.$operator_code;
$cache->delete($cache_key)
}
これは、キャッシュにとって多くの作業のようです。キャッシュの一部だけをクリアする方法はありますか?
//Something like:
$section_key = 'getrebates';
$Cache[$section_key][$operator_code];
$Cache->clearSection($section_key);
APC キャッシュに配列構造はありますか、それともすべてキャッシュのキー/値ベースですか?