Справочная информация >> Инструкции по аккаунту >> Настройка и использование Redis


Настройка и использование Redis

Redis (Remote Dictionary Server - удалённый серверный словарь в вольном переводе) - это нереляционная высокопроизводительная СУБД. Она хранит данные типа «ключ — значение», используется для кэшей и подобных механизмов ускорения. С первого взгляда может показаться, что Redis ничем не отличается от Memcached, но это далеко не так и вот почему:

  • Для начала, Redis умеет сохранять данные на диск. Можно настроить Redis так, чтобы данные вообще не сохранялись, сохранялись периодически по принципу copy-on-write, или сохранялись периодически и писались в журнал (binlog). Таким образом, всегда можно добиться требуемого баланса между производительностью и надежностью.
  • Redis позволяет хранить не только строки, но и массивы (которые могут использоваться в качестве очередей или стеков), хеш-таблицы (hashes), списки, множества без повторов, большие массивы бит (bitmaps), а также множества, отсортированные по некой величине. Разумеется, можно работать с отдельными элементами списков, словарей и множеств. вы можете указать время жизни данных (двумя способами — «удалить тогда-то» и «удалить через …»). По умолчанию все данные хранятся вечно.
  • Ещё одной особенностью Redis является то, что это — однопоточный сервер. Такое решение сильно упрощает поддержку кода, обеспечивает атомарность операций и позволяет запустить по одному процессу Redis на каждое ядро процессора. Разумеется, каждый процесс будет прослушивать свой порт. Решение нетипичное, но вполне оправданное, так как на выполнение одной операции Redis тратит очень небольшое количество времени (порядка одной стотысячной секунды).
  • В Redis есть репликация. Репликация с несколькими главными серверами не поддерживается. Каждый подчиненный сервер может выступать в роли главного для других. Репликация в Redis не приводит к блокировкам ни на главном сервере, ни на подчиненных. На репликах разрешена операция записи. Когда главный и подчиненный сервер восстанавливают соединение после разрыва, происходит полная синхронизация (resync).
  • Также Redis поддерживает транзакции (будут последовательно выполнены либо все операции, либо ни одной) и пакетную обработку команд (выполняем пачку команд, затем получаем пачку результатов). Притом ничто не мешает использовать их совместно.
  • С помощью Redis можно осуществить механизм publish/subscribe. С его помощью приложения могут создавать каналы, подписываться на них и помещать в каналы сообщения, которые будут получены всеми подписчиками. Что-то вроде IRC-чата.

Мы предлагаем вам персональный Redis сервер. Это значит что после установки сервиса, он будет доступен только для вашего аккаунта. Поэтому вам не нужно использовать авторизацию по паролю для доступа к Redis.

Дополнительные особенности Redis

Redis очень прост и прекрасно документирован

Доступ к серверу доступен только для вашего аккаунта

Приложения, использующие Redis, удобно отлаживать (команда monitor)

На данный момент длина ключа в Redis может составлять до 231 байт, длина строки — до 512 Мб, один экземпляр Redis может хранить до 232 ключей

Redis написан таким образом, что резервную копию его базы данных можно сделать простым копированием файла дампа, даже во время работы сервера

На одном сервере можно держать до шестнадцати баз данных (по умолчанию, на нашем хостинге предоставляется одна БД)

Для чего используется Redis
  • Хранилище сессий и профилей пользователей;
  • Как замена Memcached, при этом мы получаем репликацию, более длинные ключи и значения, возможность восстановления кэша с диска и тп;
  • Место для хранения количества пользователей онлайн, кодов капч, различных флагов, саджестов поисковых запросов;
  • СУБД для небольших приложений — сокращалок ссылок, имиджбордов, возможно даже блогов;
  • Хранилище промежуточных результатов вычислений при обработке больших объемов данных;
Пример использования Redis для хранения сессий

Для начала, необходимо подключить Redis с возможностью использования его функционала на Вашем аккаунте. Для этого перейдите в панель управления во вкладку «Доп. услуги» и в строке с Redis нажмите "подключить".

Для того, чтобы посмотреть, где хранятся сессии, в любом тестовом php-скрипте (назовём его test.php) вызовите функцию phpinfo(). В разделе «session» можно увидеть данные о хранении сессий.

Для того, чтобы включить хранение сессий в Redis, добавим следующие строки в файл .htaccess, который находится в корневой директории вашего проекта (если такого файла нет, его необходимо создать).

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

Первая строка определяет имя обработчика хранения сессий. Вторая определяет путь для хранения сессий. У Redis есть протокол: tcp, адрес: 127.0.0.1 (вместо него можно указать просто localhost) и стандартный порт: 6379.

Для проверки работы Redis можно в том же тестовом файле запустить сессию:

session_start();
$count = 1;
echo $count;

Далее делаем запрос к сохранённому файлу:

Подключаемся к Redis и проверяем, сохранилась ли сессия:

Использование Redis в системах управления сайтом

На примере Wordpress, Joomla и Drupal мы покажем, как можно кэшировать данные с помощью Redis

Подключение Redis к Wordpress

Для начала, зайдём в Файловый менеджер панели управления и добавим пару строк в конфигурационный файл Wordpress (по умолчанию, это wp-config.php). Вместо my-site.ru пишем название вашего сайта:

define('WP_CACHE_KEY_SALT', 'my-site.com');
define('WP_CACHE', true);

Далее, чтобы подключить Redis к Wordpress, зайдите в админку вашей CMS (ссылка по умолчанию: //my-site.com/wp-admin/), выберите «Плагины → Добавить новый»

В поле Поиска введите слово "redis" и после того, как фильтр покажет вам результат, установите «Redis Object Cache»

После успешной установки, система предложит вам активировать плагин. Нажмите кнопку «Активировать»

Затем перейдите в подраздел «Усановленные», откройте настройки плагина (settings) и включите его.

В результате статус поменяется на connected. Это значит, что Redis подключен к Wordpress и готов к использованию для хранения cache.

Чтобы проверить, что данные пишутся в Redis, можно обратиться к нему через терминал (как мы делали прежде):

Результаты тестирования с помощью утилиты siege:

До:

После:

Вывод: после подключения Redis прирост производительности составил более 40%

Подключение Redis к Joomla

Чтобы Redis начал кэшировать данные, нужно зайти в админку вашей CMS (//my-site.ru/administrator/) и перейти в раздел «Общие настройки»

Далее нажимаем на вкладку «Система» и выбираем для поля «Системный кэш» значение Стандартное кэширование, а значение в «Обработчике кэширования» меняем на Redis. Все остальные настройки оставляем как есть и нажимаем Сохранить вверху страницы.

Результаты тестирования с помощью утилиты siege:

До:

После:

Вывод: после подключения Redis прирост производительности составил более 30%

Подключение Redis к Drupal

Для установки модуля Redis в Drupal, необходимо зайти в административную часть вашей cms, раздел «Расширения» и нажать на ссылку "модули".

Таким образом вы попадёте на сайт Drupal. В поисковой строке введите redis и найдите его в выдаче.

Далее вам нужно выбрать версию, которая подходит под вашу CMS и скачать архив данных.

После этого распакуйте архив, например через наш файловый менеджер в папку с модулями. Если вы всё сделали правильно, то в разделе «Расширения» админки Drupal должен появиться новый модуль для Redis. Теперь всё, что Вам необходимо сделать для его подключения, это отметить его галочкой и нажать Установить внизу страницы

Результаты тестирования с помощью утилиты siege:

До:

После:

Вывод: после подключения Redis прирост производительности составил более 30%

Если вы хотите получить более подробную информацию о всех возможностях Redis, воспользуйтесь ссылкой на официальную документацию.

Для управления Redis через web, вы можете скачать PHP приложение отсюда. Модуль php для использования БД Redis работает только для php версии 5.3 и выше.

Удачной работы! Если возникнут вопросы - напишите нам, пожалуйста, тикет из панели управления хостингом, раздел «Написать нам».