Redis - это хранилище структур данных в памяти с открытым исходным кодом. Вы можете использовать его как альтернативу Memcached для хранения простых пар ключ-значение, как базу данных NoSQL или даже как брокер сообщений по схеме Pub-Sub. Это руководство покажет вам, как установить, настроить, отладить и защитить Redis в с 9 Stream.
Установка Redis
RPM-репо Remi's - это давний и проверенный сообществом репозиторий для CentOS. Его пакет Redis обычно новее, чем пакет Redis в CentOS.
Включите репозиторий:
1 | dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm -y |
Перечислите все доступные пакеты Redis в репозитории Remi.
1 | dnf module list | grep redis |
Результат должен выглядеть следующим образом:
1 2 3 4 5 6 | redis 7 common [d] Redis persistent key-value database redis remi-5.0 common [d] Redis persistent key-value database redis remi-6.0 common [d] Redis persistent key-value database redis remi-6.2 common [d] Redis persistent key-value database redis remi-7.0 common [d] Redis persistent key-value database redis remi-7.2 common [d] Redis persistent key-value database |
Значения во втором столбце выше соответствуют основным версиям Redis.
Предварительно может понадобиться сброс модуля редис
1 | dnf module reset redis |
Предполагая, что последняя основная версия - 7.4, установите эту версию:
1 | dnf module install redis:remi-7.4 -y |
Включите службу Redis для запуска во время загрузки.
1 | systemctl enable redis.service |
Запустите Redis.
1 | systemctl start redis.service |
Настройка Redis
Откройте файл конфигурации Redis :
1 | nano /etc/redis/redis.conf |
Измените режим запуска
1 | daemonize yes |
Установите желаемый объем памяти для вашего приложения.
1 | maxmemory 128mb |
По умолчанию, когда maxmemory будет достигнуто, Redis перестанет записывать новые данные. Если вы хотите, чтобы Redis записывал новые данные, автоматически удаляя старые, вы должны указать Redis, как их удалять. Политика выселения allkeys-lru является хорошим выбором для большинства пользователей. Добавьте следующую строку:
1 | maxmemory-policy allkeys-lru |
Установите политику сохранения на диск, если это требуется..
По умолчанию Redis будет сохранять данные в памяти на диск после определенного периода или определенного количества операций записи в БД. Настройки по умолчанию следующие:
1 2 3 | save 900 1 save 300 10 save 60 10000 |
Это означает, что сохранение произойдет
- через 900 сек (15 мин), если изменился хотя бы 1 ключ
- через 300 сек (5 мин), если изменилось не менее 10 ключей
- через 60 секунд, если изменилось хотя бы 10000 ключей
При указанных выше настройках по умолчанию Redis будет загружать сохраненные данные в память при каждом перезапуске. Таким образом, ваши предыдущие данные в памяти будут восстановлены.
Если вы решите сохранить эту функцию, вам следует обновить сервер до более производительного или добавить соответствующий файл подкачки в Linux, чтобы память Redis была вдвое больше, чем maxmemory, объявленная выше. В противном случае, когда maxmemory будет достигнута, процесс сохранения может привести к тому, что на вашем сервере закончится память.
Сохраните и закройте конфигурационный файл, затем перезапустите Redis, чтобы применить изменения.
1 | systemctl restart redis.service |
Проверка журналов
Проверьте файл журнала Redis:
1 | tail /var/log/redis/redis.log |
Ошибка Failed to write PID file: Permission denied
В файле конфигурации, найдите параметр pidfile
1 | nano /etc/redis/redis.conf |
К примеру
1 | pidfile /var/run/redis_6379.pid |
и измените его на
1 | pidfile /var/run/redis/redis.pid |
Проверка установки
Перезапустите сервер:
1 | reboot |
После перезапуска сервера проверьте файл журнала Redis, чтобы убедиться в отсутствии предупреждений:
1 | tail /var/log/redis/redis.log |
Используйте программу redis-cli для подключения к Redis через стандартный loopback IP 127.0.0.1 и порт 6379.
1 | redis-cli -h 127.0.0.1 -p 6379 |
Если подключение прошло успешно, вы увидите командную строку Redis:
1 | 127.0.0.1:6379> |
Введите несколько команд Redis, чтобы убедиться, что все работает:
1 2 3 | set testkey testvalue get testkey exit |
Если вы увидите следующий результат, значит Redis работает правильно.
(Необязательно) Настройка Redis для доступа в локальной сети
Если вы создаете производственную среду с несколькими серверами для вашего приложения, серверам приложений необходим доступ к серверу Redis. Для безопасности рекомендуется использовать частную сеть.
Следуя этому руководству, включите и настройте частную сеть для этого сервера Redis и серверов приложений, которые должны взаимодействовать с Redis.
Обновите службу firewalld, чтобы разрешить входящие соединения из частной сети:
1 | firewall-cmd --permanent --zone=trusted --change-interface=ens1 |
Создайте службу systemd для отсрочки запуска Redis до тех пор, пока частный интерфейс не будет запущен и IP-адрес не будет назначен.
1 | nano /etc/systemd/system/redis.service.d/wait-for-ips.conf |
Вставьте следующий текст в файл, затем сохраните и закройте его:
1 2 3 | [Unit] After=network-online.target Wants=network-online.target |
Отредактируйте файл конфигурации Redis.
1 | nano /etc/redis.conf |
Добавьте частный IP-адрес, к которому должен привязываться Redis. Например, если Redis должен привязаться к внутреннему loopback (127.0.0.1) и частному IP-адресу (192.168.0.2):
1 | bind 127.0.0.1 192.168.0.2 |
Сохраните и закройте конфигурационный файл.
Перезапустите Redis, чтобы применить изменения.
1 | systemctl restart redis.service |