Memcache или магазин базы данных - это путь. В обоих случаях, когда ваш сайт масштабируется, ваши многочисленные серверы смогут получать/устанавливать данные сеанса.
Я использовал и в прошлом, и есть несколько вещей, которые вы должны знать:
1) Оба могут хранить произвольные данные
A Rails сессии рассматривается как Hash, а значение который хранится, является сериализованной версией этого хэша. В Memcache ключ => пара значений - session_id => session_contents. В хранилище базы данных у вас есть два столбца: один для идентификатора и один для содержимого.
2) Memcache немного быстрее
Каждый немного скорости помогает; для этой цели Memcache будет быстрее, чем база данных.
3) Memcache имеет тенденцию к снижению клавиш, когда он получает полный
Если Memcache экземпляр запускается из памяти, он начинает падать ключи. Он делает это, сначала отбрасывая самые старые. Поскольку сеансы активно используются, вы можете уменьшить это, пощекотав данные сеанса по каждому запросу; который держит их в верхней части кучи. Но если ваш экземпляр действительно заполнен, возможно, вы начнете сбрасывать сеансы на пол и регистрировать пользователей. Обычно это проблема только в ситуации очень быстрого роста, например, если вы получаете slashdotted. В противном случае достаточно просто следить за сервером Memcache и следить за тем, чтобы у вас не было памяти.
4) Таблица базы данных будет быстро заполняться истекшими сеансами Memcache автоматически отбрасывает старые вещи. Когда пользователь не выходит из системы, а просто отказывается от сеанса, вы должны вручную выполнить очистку в базе данных. Обычно это лучше всего делать с ежедневным заданием cron. Если нет, вы получите базинированные устаревшие записи, которые замедляют запрос к этой таблице.
Что лучше для вас? Я не знаю. Это зависит от вашей ситуации и тех рисков, которые вы готовы принять. У меня никогда не было проблемы с удаленными сеансами с memcache, но это действительно зависит от того, для чего еще вы используете memcache. Если вы используете его много, второй экземпляр memcache только для сеансов может быть способом. Тогда нет риска сбросить их.
Что вы храните в сеансах? Кажется, если они> 4kb, вы можете слишком много хранить. –
@Beerlington, я сохраняю ответ от механизма калькуляции страхования, а также данные формы. – Harry