Godwarlock
8.02.2015 - 02:02
Прочитал про кеширование данных, мол возможность кешировать собранные пользователем данные, которые должны потом заноситься в бд по какому-то событию. И возник вопрос, если есть к примеру пользователь, он может изменить свой ник, пароль и т.п. И чтобы сразу не вносить в бд изменения, кешируем новые введенные данные. Собственно как потом эти данные занести в бд, если пользователь покинул страницу или через какое-то время после того как он покинул страницу. Подскажите способ реализации. Кешировать данные я так понял можно через memcached, при этом эти данные можно также еше изменять, но они пока не вносятся в бд.
vagrand
8.02.2015 - 11:55
Обычно кэширование работает по другому. Есть некие данные в БД и есть несколько запросов, которые по некоторым параметра эти данные выбирают. Так вот кэшируются как раз запросы на выборку, т.е. перед выборкой мы смотрим есть ли у нас уже данные в кэше по указанным параметрам, если есть то берем из кэша, если нет то делаем запрос и заносим в кэш.
При таком подходе есть одна основная проблема, а именно как понять что даные в кжше устарели? Например те же самые параметры юзера изменились в бд, но в кэше остались старые данные. И тут есть два основных подхода:
1. Очистка кэша по времени. Т.е. кэшированным данным ставится некий срок годности, после которого они устаревают и удаляются из кэга или перезаписываются новыми данными. Такой подход возможен для данных, которые часто обновляются и которые не являются критичными. ну например некая статистика.
2. Очистка кжша при изменении данных в БД. Наример событие, которое обновляет данные о пользователе в БД так же удаляет из кэша все данные о нем с тем, чтобы при следующей выборке в кэш подтянулись свежие данные из БД.
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.