empecé a usar Zend Cache (APC backend) y todo está bien en términos de la devolución de valores almacenados en caché en lugar de golpear la base de datos cada vez. Sin embargo, aquí está mi problema:Patrones para despejar Zend Cache
$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;
Cada operador tiene sus propios descuentos que varían entre los operadores, ahora si cambio de la base de datos y la necesidad de aclarar las rebajas para todos los operadores, ¿cómo voy a hacer esto?
Puedo usar $ Cache-> clean(), pero eso borrará los otros cachés (no solo el caché de reembolsos para cada operador). Si recorro todos los operadores:
foreach($operator_codes AS $operator_code) {
$cache_key = 'getrebates_'.$operator_code;
$cache->delete($cache_key)
}
Parece mucho trabajo para la memoria caché. ¿Hay alguna manera de borrar solo una sección de Caché?
//Something like:
$section_key = 'getrebates';
$Cache[$section_key][$operator_code];
$Cache->clearSection($section_key);
¿Hay alguna estructura de matriz en la memoria caché de APC o está todo basado en la clave de caché?
excepción de APC ... – regilero
Gracias por su tiempo de Duke. Como se indica en regilero a continuación, APC no admite etiquetas. ¿Qué back-end usaría en este caso para soportar etiquetas? –
¿Cuántas entradas de caché estamos hablando? Si es 10 o 20, simplemente eliminaría cada entrada. Dependiendo de sus necesidades usted podría considerar el ahorro de una matriz asociativa serializado en la memoria caché en lugar de entradas individuales. Esta no es una buena idea si tiene que actualizar/eliminar entradas individuales a menudo a través de – theduke