Memcache является программным пакетом, который используется для ускорения работы приложения — Хранение сессий в memcached является часто применяемым и эффективным решением.
Memcache может работать как на одном с приложением сервере, так и на других серверах — что является более популярным решением.
Хранение сессий в memcached
Подключение к Memcache по умолчанию осуществляется по порту 11211.
Чтобы выполнить подключение к серверу на уровне приложения достаточно отредактировать файл php.ini — в него добавляется имя обработчика сессий и путь к нему:
session.save_handler = memcache
session.save_path = «tcp://localhost:11211»
Подключение к внешнему серверу Memcache
Под Memcache часто выделяется отдельный сервер — подключение в этом случае осуществляется таким же образом, изменяется только IP-адрес (белый адрес или адрес из локальной сети):
session.save_handler = memcache
session.save_path = «tcp://123.123.123.123:11211»
Кластер серверов Memcache
Так выглядит подключение при использовании кластера серверов:
session.save_handler = memcache
session.save_path=»tcp://123.123.123.123:11211, tcp://123.123.123.124:11211"
В директиве session.save_path можно передавать параметры, используемые при работе с РНР сессиями:
session.save_path=”tcp://123.123.123.123:11211?persistent=1&weight=1&timeout=1&retry_interval=25″
В примере заданы необходимость постоянного использования сервера, таймаут, вес сервера (их может использоваться несколько и интервал попыток повторного установления соединения в случае его разрыва).
Т.е. создание кластеров любого размера не представляет никакой сложности, нет необходимости настраивать репликацию и перемещать данные с одного сервера на другой, Memcache поддерживает это изначально.
В качестве альтернативы можно использовать Redis. Стоит учитывать, что ни одно из хранилищ не гарантирует сохранности данных в случае сбоев (например, отключения электропитания). Это вызвано тем, что информация хранится в энергозависимой оперативной памяти.
Использовать Memcahce и аналоги при этом все равно стоит.
Хранение сессий в хранилище на отдельном сервере является необходимым условием построения отказоустойчивой системы для веб проекта.