Я начинаю добавлять слой memcached в мое приложение.пока все хорошо.
Я довольно быстро понял, однако, что мне нужно будет сделать недействительными / удалить большие партии ключей за один раз, когда кто-то загрузит файл на сайт, чтобы сохранить актуальность данных.
Я немного читал, и наиболее распространенным способом решения этой проблемы, кажется, является установка номера версии для каждого ключа, а не удаление ключей при загрузке пользователем (поскольку может быть так много перестановок).увеличивая номер версии, вызывая пропадание кэша при следующем обращении к данным.
Я понятия не имею, с чего начать, чтобы получить этот код, и я не совсем уверен, что все равно смогу полностью разобраться с этим..
Мой код в настоящее время выглядит следующим образом: -
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("Could not connect");
$key = md5("songsearch_$textSearch.$rangeSearch");
Две переменные в ключе var выше получены из запроса get, который, в свою очередь, извлекает большое количество JSON.(Вспомните каталог продуктов).
Эти переменные также определяют сам запрос, который динамически составляется в зависимости от этих переменных.В конечном итоге все это дает мне ключ, который уникален для каждого отдельного запроса, хотя из одного и того же сценария я могу создать сотни ключей.
Надеюсь, что все ясно, если нет, пожалуйста, попросите меняуточнить любые моменты, чтобы лучше помочь вам ответить на мой вопрос.
Очевидно, позже, чтобы установить кэш результатов, я использую это: -
$memcache->set($key, $output, MEMCACHE_COMPRESSED, time() + 24*60*60*365);
непосредственно перед тем, как кодировать JSON.
Так что мой вопрос на самом деле таков: как я могу добавить некоторую форму инкрементного управления версиями, чтобы, если пользователь загружает файл, я мог сделать недействительной всю партию ключей, сгенерированных этим сценарием?
Огромное спасибо всем, кто хотя бы поставил меня на правильный путь.