В этой статье мы обсудим, что такое Redis, его ключевые преимущества и основные сценарии использования.
Что такое Redis?
Redis (REmote DIctionary Server) — это сетевое хранилище данных с открытым исходным кодом, работающее по принципу «ключ-значение». По сути, это база данных, но значительно упрощённая и более быстрая, поскольку в ней отсутствуют связи между данными, а также используется подход NoSQL.
Redis имеет много общего с Memcached, поскольку тоже хранит данные в оперативной памяти и обеспечивает доступ к ним по ключу. Однако у Redis есть важные отличия:
- Сохранение на диск: данные можно сохранять на диск, что минимизирует риск потери информации при сбоях.
- Разнообразие типов данных: помимо строк (strings), Redis поддерживает списки (lists), множества (sets), хеш-таблицы (hashes) и упорядоченные множества (sorted sets).
Управление временем жизни данных
Redis позволяет задавать время жизни данных двумя способами:
- Удаление в конкретный момент времени.
- Удаление через заданный промежуток времени.
По умолчанию данные хранятся бессрочно.
Однопоточность Redis
Redis — однопоточный сервер, что обеспечивает ряд преимуществ:
- Атомарность операций: транзакции выполняются полностью или не выполняются вовсе.
- Пакетная обработка команд: можно отправлять группы команд и получать результаты одним пакетом.
Несмотря на однопоточность, Redis работает крайне быстро и способен обрабатывать около 28 тысяч запросов в секунду.
Основные случаи использования
Благодаря высокой скорости, Redis идеально подходит для хранения:
- Счётчиков (например, количества просмотров страниц).
- Временных данных.
- Кэша для сайта.
- PHP-сессий.
Подключение Redis к WordPress
Шаг 1. Изменение wp-config.php
Для подключения Redis к CMS WordPress нужно добавить директивы в файл `wp-config.php`. Откройте файл через файловый менеджер и добавьте следующие строки после первой строки `<?php`:
```php
define('WP_CACHE_KEY_SALT', 'my-site.com_');
define('WP_CACHE', true);
```
Где `'my-site.com_'` — это имя вашего сайта или уникальный префикс для хранения данных в Redis. Это важно, если Redis используется для нескольких сайтов. Сохраните изменения.
Шаг 2. Установка и активация плагина
1. Перейдите в административную панель сайта. Например, `http://my-site.com/wp-admin`.
2. Выберите пункт Плагины → Добавить новый.
3. Найдите плагин "Redis Object Cache" через поиск.
4. Установите и активируйте плагин.
5. Перейдите в настройки плагина и включите его.
После этого WordPress будет подключён к Redis, что подтвердится соответствующим сообщением.
Шаг 3. Проверка работы
Проверьте, что данные пишутся в Redis:
127.0.0.1:6379> keys my-site.com*
Вы должны увидеть список ключей, соответствующих данным вашего сайта.
Шаг 4. Тест производительности
Сравните производительность сайта до и после подключения Redis с помощью утилиты Siege. Пример результатов:
Без Redis:
- Время самой долгой транзакции: 64.71 сек
- Количество запросов: 10,638
С Redis:
- Время самой долгой транзакции: 5.11 сек
- Количество запросов: 11,849
Видно, что использование Redis значительно повышает скорость обработки запросов и общую производительность сайта.
Подключение Redis к Joomla
Шаг 1. Вход в административную панель
Зайдите в административную часть сайта Joomla: `http://my-site.com/administrator/`.
Шаг 2. Настройка кэширования
В версии Joomla 3.x и выше поддерживается подключение Redis для кэширования данных. Для этого:
1. Перейдите в меню Система → Общие настройки.
2. На открывшейся странице выберите вкладку Система.
3. Установите значение "кеш" в поле Стандартное кеширование.
4. Выберите Redis в поле Обработчик кеширования.
5. Оставьте остальные настройки по умолчанию.
6. Сохраните изменения.
Шаг 3. Проверка работы
Подключитесь к Redis и убедитесь, что данные пишутся в хранилище:
127.0.0.1:6379> keys *
Вы должны увидеть ключи, связанные с кэшированием Joomla.
Шаг 4. Тест производительности
Сравните производительность сайта до и после подключения Redis с помощью утилиты Siege. Пример результатов:
Без Redis:
- Время самой долгой транзакции: 54.82 сек
- Количество запросов: 8,165
С Redis:
- Время самой долгой транзакции: 8.68 сек
- Количество запросов: 9,442
Использование Redis значительно уменьшает время обработки запросов и увеличивает общую производительность сайта.