С на первой странице memcached :
Memcached - это хранилище значений ключей в памяти для небольших порций произвольных данных (строк, объектов) из результатов вызовов базы данных, вызовов API или визуализации страницы.
Хотя memcached часто используется с MySQL, он не имеет особых связей с MySQL или любой другой базой данных. Это просто хранилище значений ключей, обеспечивающее постоянный (O (1)) доступ к данным, кэшированным по ключу. Данные сохраняются в памяти процессом memcached. (Многое из этого объяснено в FAQ ).
Что касается вашего второго вопроса, то ваша заявка / ваша обязанность - обеспечить, чтобы memcached был уведомлен о любых изменениях. Это можно сделать с помощью разумных периодов истечения срока действия в кэшированных данных или с помощью сценария или интерфейса командной строки для ручной очистки устаревших записей. Некоторые фреймворки будут обрабатывать уведомления memcached об изменениях при условии, что изменения будут сделаны через фреймворк. В конечном счете, если вам необходимо обеспечить постоянный доступ пользователей к самым последним данным в режиме реального времени, кэширование не является хорошим решением вашей проблемы. Кэширование работает по принципу, что иногда можно обслуживать устаревшие данные - вы должны сконструировать свое приложение так, чтобы оно кэшировало данные, которые могут быть устаревшими, но всегда использует поиск в надежных источниках данных, которые должны будь свежим.