У меня есть база данных mysql и кеш (memcached) перед ней.Удерживайте запросы базы данных mysql
В принципе, я не хочу, чтобы какой-либо запрос переходил в мою базу данных. Вместо этого на весь запрос должен отвечать кеш.
Однако кеш сбрасывается каждые 10 минут, а затем запросы поступают в мою базу данных до тех пор, пока кэш не будет обновлен последними данными. Но это может привести к скачкам трафика в течение нескольких часов!
Как я могу сдержать запросы или позволить только одному из них перейти к моей базе данных до тех пор, пока кеш не будет обновлен снова?
$get_result = $memcache->get('key'); //retrieve memcached data if possible
if($get_result){
// Show the memcached result
}else {
// Make request to the database
...
// and re-set the cache
$memcache->set('key', $get_result, false, 600);
}
Похоже, у НУ хочет отключить кэш гиперемию, но вы не кажется, чтобы понять, как работает cahce ... он должен быть в состоянии поразить базу данных, чтобы обновить – gbtimmon
Почему вы промывку всего кэша сразу ? Почему бы не дать 10-минутный TTL для таких элементов, чтобы запросы после того, как TTL попали в базу данных, чтобы повторно заполнить кеш на основе каждого элемента, а не на весь кеш одновременно? –
Даже на основе каждого элемента, если элемент получает покраснение, а затем сразу же запрашивается несколькими 100 людьми, все они идут в БД прямо сейчас –