WebWost WebWostbeta

Установка Redis

Подключаем Redis. Пример хранения сессий в памяти через Redis

Al-Sher

Всем привет! Для ускорения работы сайта можно действовать по разному и один из действительно хороших способов - хранить часто используемые данные в памяти, то есть в ОЗУ. Раньше я уже писал про использование Memcached, а сегодня я хочу рассказать про его альтернативу - Redis. Изначально следует посмотреть основные отличия:

Установка Redis

Давайте сразу перейдем к установке Redis. Установим сам Redis-сервер, к которому будем обращаться в дальнейшем:

А теперь установим php-модули для работы с Redis:

Настройка Redis

Что же мы можем настроить в Redis? На самом деле очень многое, но мы воспользуемся лишь основным - прослушиваемыми ip адресом и портом. Все настройки находятся в /etc/redis.conf. Откроем этот файл:

nano /etc/redis.conf

Находим там port и смотрим что он слушает:

port 6379

Чуть ниже можно обнаружить bind, который указывает на ip-адрес, который мы "слушаем". По умолчанию Redis слушает localhost, то есть 127.0.0.1:

bind 127.0.0.1

Не забываем перезагрузить redis после редактирования файла конфигурации:

service redis restart

Хранение сессий в Redis

Сейчас мы заставим наш PHP хранить сессии в Redis. Редактируем php.ini:

nano /etc/php.ini

Там мы ищем следующие строки:

session.save_handler = files
session.save_path = "/tmp"

Возможно путь у ваших сессий другой, так что ищите по самим переменным ? Заменяем найденные строки на:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

Перезагружаем php:

service php restart

Для проверки работоспособности следует воспользоваться функцией phpinfo и найти строки, отвечающие за сессии. Если вдруг изменения не произошли, возможно настройки данных переменных уже прописаны в .htaccess или в конфиге php-fpm.

Пример работы с Redis из PHP

Создадим простенький скрипт, который будет записывать в Redis текущее время:


<?php

$Redis = new Redis();
$Redis->connect('127.0.0.1', 6379);
$Redis->set('dtime',time());
$time = $Redis->get('dtime');
if($time != '') echo $time;

?>

Разберем наш код: Изначально мы объявляем переменную $Redis, в которой будем хранить соединение с Redis. Используя функцию connect, мы соединяемся с 127.0.0.1:6379, то есть с нашим сервером. Далее мы записываем в переменную dtime значение функции time(). Если значение dtime в Redis не равно пустоте, то выводим его.

Дополнительно

Если Вы храните что-то очень важное в Redis, то рекомендую установить пароль в конфиге Redis:

# requirepass foobared

заменить на

requirepass password

Теперь, без авторизации, Redis будет выводить ошибку

(error) NOAUTH Authentication required.

Авторизуемся:

$Redis->auth('password');

Авторизация проходит уже после подключения к Redis.

Заключение

На этом я хочу закончить данную статью, если у Вас возникли вопросы, то задавайте их в комментариях и я постараюсь Вам помочь :)

0 Комментариев

Новый комментарий