Btw вместо хранения значений базы данных в файлах, которые я сохранил бы в Redis.
Вы бы хранить объекты базы данных в кэше файлов, как это:
- _sCache_product_1
- _sCache_product_2
- _sCache_product_200
так _sCache_producct_1 хранит JSon закодированные значения объекта продукта с идентификатором 1. Так когда продукт с идентификатором 1 удаляется, я буду знать, что мне придется удалить только файл _sCache_product_1 и ничего другого. Ваша функция getProduct будет что-то вроде:
public function getProduct($id)
{
// First check the caching system if you have product with id
if ($product = $this->cache->readCache($id)) {
return json_decode($product, true);
}
// Product doesn't exist in cache fetch fetch it from the database
// then store it in the caching system.
}
Этот подход элегантно сделано с использованием ORM как доктрины, где вы можете создать обработчики событий, но это уже другая тема.