Бортовой журнал
Бортовой журнал

В этой статье мы расскажем про Redis: что это такое, для чего используется и как с его помощью ускорить работу сайта.

Что такое Redis

Redis — это сетевое журналируемое хранилище данных типа «ключ-значение» с открытым исходным кодом, которое используется в качестве базы данных, кэша, брокера сообщений и очереди. На сервере данные хранятся не строго в схемах (таблицах, строках и столбцах), а в самих структурах данных. Redis поддерживает работу со строками, списками, хешами, обычными и сортируемыми множествами.

СУБД Redis обладает высокой производительностью и обеспечивает время отклика на уровне доли миллисекунд. Поэтому система часто используется в приложениях, требующих высокоскоростной обработки данных, таких как аналитика в реальном времени, игры, службы такси, социальные сети и электронная коммерция.

Принцип работы Redis схож с Memcached. Они похожи тем, что хранят данные в оперативной памяти и обращаются к ним по ключу. Однако Redis имеет несколько отличий:

  1. Редис позволяет хранить данные на диске, что снижает риск потери данных в случае сбоев.
  2. Redis поддерживает следующие типы данных: списки, строки, обычные множества, хэши, сортируемые множества.

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

Redis — это однопоточный сервер. Благодаря этой особенности обеспечивается атомарность операций, то есть Redis поддерживает транзакции и пакетную обработку команд. Минусом такой особенности можно бы было назвать медлительность запросов, но Redis работает очень быстро, обрабатывая в среднем около 28 000 запросов в секунду. Такая скорость делает его отличным вариантом для хранения различных счетчиков и временных данных, включая кэш сайта и PHP-сессии.

Преимущества Redis

  1. Производительность. Redis хранит данные исключительно в кэше на сервере, поэтому их не нужно переносить на диск. Это приводит к повышению пропускной способности и снижению задержек ядра — система выполняет до миллиона операций в секунду.
  2. Масштабируемость. С помощью Redis можно создать кластерную архитектуру. В этом случае проекты будут работать стабильно и надежно. Вы можете выбрать горизонтальное или вертикальное масштабирование, а также изменить размер кластера в соответствии с вашими требованиями.
  3. Асинхронная репликация. В Redis поддерживается асинхронная репликация данных, которая позволяет копировать информацию на несколько подчиненных серверов. Эта функция повышает скорость получения данных, поскольку запросы распределяются между серверами. Кроме того, это помогает быстро восстановиться в случае выхода из строя основного сервера. Чтобы обеспечить постоянное хранение данных, Redis хранит моментальные снимки состояния на определенный момент времени.
  4. Поддержка множества структур данных. Обычно хранилища поддерживают ограниченный набор структур данных. Redis отличается от них тем, что поддерживает широкий спектр структур данных, таких как строки, списки, множества, сортируемые множества, битовые массивы, структуры HyperLogLog, потоки, пространственные данные, JSON.
  5. Простота и удобство. При помощи Redis вы можете писать сложный код с меньшим количеством строк. Программа позволяет хранить, организовывать и получать доступ к данным с помощью всего нескольких простых строк кода. Например, если вам нужно переместить данные в хранилище, используйте хэш данных. Redis совместим с многими языками программирования, такими как Java, PHP, C++, JavaScript, Node.js, Python, Ruby, Go и другими.

Зачем нужен Redis

Рассмотрим, для чего применяется Redis:

  • кэширование. Redis кэширование — это отличный инструмент для управления высокодоступным кэшем в памяти, который минимизирует задержки доступа, повышает пропускную способность и облегчает нагрузку на реляционные и NoSQL базы данных, а также приложения. С Redis cache вы сможете получить быстрый доступ к часто запрашиваемым данным с задержкой всего в несколько миллисекунд. Кроме того, он обеспечивает легкую масштабируемость, способен справляться с большими нагрузками без дорогостоящего увеличения мощностей сервера. Redis обычно используется для кэширования результатов запросов к базам данных, длительных сессий, веб-страниц и часто используемых объектов, таких как изображения, файлы и метаданные;
  • создание чатов и очередей. Благодаря высокой производительности с помощью Redis можно создавать ленты новостей и комментариев, которые обновляются в режиме реального времени, а также чаты;
  • создание таблиц в играх. Разработчики игр часто используют Redis для создания таблиц лидеров, обновляющихся в режиме реального времени. Для этого используется структура хранения данных Redis Sorted Set. Она обеспечивает уникальность элементов и сортировку списка по результатам пользователей. Для создания ранжированного списка в реальном времени необходимо лишь обновлять результат пользователя каждый раз, когда он меняется. Кроме того, структуры Sorted Set могут обрабатывать временные данные, используя временные метки в качестве результата;
  • брокер сообщений. С помощью Redis вы сможете разгрузить веб-сервисы в распределенной системе: вам не потребуется дополнительное время на ресурсоемкие задачи, такие как поиск получателя или маршрутизация при отправке сообщений;
  • хранение сессий в Redis. Redis часто применяется для хранения сессий и управления данными в приложениях. Он обеспечивает задержку в доли миллисекунды, масштабируемость и отказоустойчивость, что делает его идеальным выбором для управления данными сессий: профилями пользователей, учетными данными, статусом сессии и настройками пользователя;
  • машинное обучение. Redis хранит информацию в скоростном хранилище, с помощью которого можно обработать большой объем данных в режиме реального времени и автоматизировать принятие решений. Поэтому его можно использовать для быстрого создания, обучения и развертывания моделей машинного обучения;
  • обработка геопространственных данных. В Redis есть команды, позволяющие хранить, обрабатывать и анализировать геопространственные данные в режиме реального времени. Этот функционал можно использовать, чтобы добавить в приложение различные возможности на основе данных о местоположении, включая расчет времени в пути, определение расстояния до пункта назначения и информацию о достопримечательностях.
  • хранение промежуточных данных. К примеру, этом могут быть формы голосований или таблицы для сбора результатов;
  • аналитика в режиме реального времени. Redis можно использовать для решений с потоковой передачей (Apache Kafka, Amazon Kinesis) как хранилище данных в памяти для сбора, обработки и анализа данных с задержкой в доли миллисекунды. Redis подходит для аналитики в режиме реального времени, например, в социальных сетях, при персонализации контента и для таргетированной рекламы.

Как увеличить производительность сайта с помощью Redis

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

  1. Авторизуйтесь в панели управления хостингом.
  2. Перейдите в раздел «Хостинг» > «Базы данных» и нажмите Создать базу данных:
  3. Выберите тип базы данных Redis:
  4. Выберите сайт, для которого хотите подключить хранение PHP-сессий:
  5. Нажмите Создать:
  6. Перейдите в раздел «Хостинг» > «Сайты» и нажмите на сайт, для которого подключаете хранение сессий: Важно! На текущий момент хранение PHP-сессий в Redis доступно только для PHP 7.1 и выше.
  7. Нажмите Подключить рядом с пунктом «Хранение сессий сайта в Redis»:
  8. Во всплывающем окне нажмите Подключить:

Готово, вы подключили хранение сессий сайта в Redis.

Как подключить Redis к Wordpress

Чтобы подключить Redis к Wordpress:

  1. Авторизуйтесь в админке сайта Wordpress.
  2. Перейдите в раздел «Плагины» и нажмите кнопку Добавить новый:
  3. В поисковой строке введите название плагина — Redis Object Cache. Рядом с нужным плагином нажмите Установить:
  4. Рядом с установленным плагином нажмите кнопку Активировать:
  5. Откройте панель управления хостингом.
  6. Перейдите в «Файловый менеджер». В корневой папке сайта найдите файл wp-config.php и откройте его:
  7. В конфигурационный файл добавьте строки:
    define( 'WP_REDIS_HOST', 'IP_address' );
    define( 'WP_REDIS_PORT', port_number );
    define( 'WP_REDIS_SCHEME', 'tcp' );


    где:
    • IP_address — IP-адрес,
    • port_number — номер порта.
    Посмотреть IP-адрес и номер порта можно в разделе «Хостинг» > «Базы данных» > «NoSQL базы данных»:
  8. Нажмите Сохранить и закрыть.
  9. Кэширование включится автоматически. Если этого не произошло, в админке Wordpress в разделе «Настройки» > «Redis» нажмите Включить объектный кэш:

После этого запустится процесс сбора данных и вы получите доступ к статистике. В документации приведены некоторые параметры конфигурации для бесплатной версии. Чтобы получить полное представление о работе кэширования, приросте производительности, скорости и многом другом, рекомендуем установить плагин Query Monitor.

Если вам нужны более серьезные настройки кэширования и полный доступ к возможностям Redis, установите плагин Object Cache Pro. Он значительно повышает скорость работы сайта, предлагает широкий функционал и собирает статистические данные. Установка этого плагина аналогична установке Redis Object Cache. Перед установкой Object Cache Pro нужно деактивировать бесплатную версию, если она активирована. Конфигурация для файла wp-config.php выглядит так:

define('WP_REDIS_CONFIG', [
'token' => '',
'host' => 'IP_address',
'port' => port_number,
'maxttl' => 3600 * 24 * 7, // 7 days
'timeout' => 1.0,
'read_timeout' => 1.0,
'split_alloptions' => true,
'debug' => false,
]);
где:

  • IP_address — IP-адрес,
  • port_number — номер порта.

С этим плагином вы сможете настроить всё под собственный проект и получить подробную информацию о том, как работает кэширование.

Также вы можете воспользоваться плагином Powered Cache. Для его подключения в конфигурационный файл wp-config.php нужно внести строку:

$redis_server = array( 'host' => 'IP_address', 'port' => port_number, 'sheme' => 'tcp' ); где:

  • IP_address — IP-адрес,
  • port_number — номер порта.

После подключения Powered Cache рекомендуем установить плагин Query Monitor.

Подведем итоги

Redis — мощный инструмент для разработчиков, известный своей высокой производительностью, масштабируемостью и универсальностью. Он поддерживает различные структуры данных, включая строки, хэши, множества, списки и сортируемые множества. Redis широко используется в качестве базы данных, кэша, брокера сообщений и в аналитических приложениях в реальном времени. Redis создан для обработки большого количества одновременных соединений, что делает его отличным выбором для веб-приложений с высоким трафиком. Используя Redis, вы сможете значительно улучшить производительность вашего сайта.