2009-04-30 2 views
0
SELECT a.* b.* c.* 
FROM TOPIC a, BOARD b, MSGS c 
WHERE c.MessageID = 1 AND a.TopicID = c.MessageID AND b.BoardID = c.BoardID 

Как сохранить эти данные?Как memcache эти данные?

set_cache("MY_WACKY_QUERY_1", data) note: 1 is the message id 

В настоящее время существует много мест в коде, которые обновляют эти 3 таблиц (independantly друг от друга), так что мы должны del_cache("XXX_1"); всякий раз, когда какие-либо из этих обновлений и вставок влияют MSGS, тема или данные BOARD для, или связанное с ним сообщение с идентификатором 1

Есть ли простое решение?

ответ

0

Вы не можете удалить данные из memcached, не зная точного ключа кеша, который использовался для его хранения. Нет «индекса» или «списка ключей», из которого вы можете искать сохраненные данные.

Одним из решений может быть сокращение времени кеширования достаточно коротким, чтобы устаревшие данные в основном были несерьезными.

Или, может быть, я смущен. Для меня это похоже на вас может сделать это.

<?php 

$memcache = new Memcache; 
$memcache->connect('memcache_host', 11211); 

// do select query here, store into $result 

$memcache->set('MY_QUERY_1', $result, false, 600); 

// do another select query here, store into $result 

$memcache->set('MY_QUERY_2', $result, false, 600); 

// Query here updates record with id of 1 

$memcache->delete('MY_QUERY_1'); 
+0

Прежде всего, спасибо вам большое за Питер за ваш быстрый ответ. В настоящее время я использую триггер «tangent UDF» MemCache MySql, он отлично работает для меня, чтобы обновить только одну таблицу с помощью этого ключа. Можно ли использовать триггер для обновления нескольких таблиц на основе запроса на соединение MySql? – 2009-04-30 09:33:57

Смежные вопросы