Как запоминать эти данные? - PullRequest
0 голосов
/ 30 апреля 2009
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

Как запоминать эти данные?

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

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

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

1 Ответ

0 голосов
/ 30 апреля 2009

Вы не можете удалить данные из 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' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...