Какие данные можно хранить в кэше, а какие лучше в бд?
Добрый день!
Задался вопросом, какие данные стоит хранить в кэше (memcached), а какие лучше в базе данных?
Понятное дело, что пароль точно не стоит хранить в кэше :)
Простой пример - нужно сгенерировать код авторизации который будет действителен, например, 5 минут.
Есть два варианта решения: 1. Записать код авторизации в кеш указав срок - 5 минут. 2. Записать код авторизации и время создания в бд, и по крону проверять актуальность (либо в момент вызова, но тут возможно захламление старыми кодами, и опять же придётся чистить кроном)
1-ый вариант выглядит самым симпатичным, но правильно ли будет такая реализация?
Хранят данные только в базе.
В кэше данные не хранят. Вообще. "Хранить данные в кэше" - это оксюморон. Кэш - это противоположность хранилищу. Хранилище гарантирует наличие данных, а кэш не гарантирует ничего, и при отсутствии данных лезет в хранилище.
Кэш служит для ускорения доступа к данным, а не для их хранения
В memcached стоит хранить (короткоживущие) пользовательские сессии. Сессии не хранят пароли, а только сгенерированные идентификаторы.
Пароли нужны серверу только на этапе идентификации пользователя.
Кроме того, читай ответ FanatPHP .