6.17 Установка и настройка Redis

Баннер

Redis (Remote Dictionary Server) является мощной системой управления базами данных типа “ключ-значение”, получившей широкое распространение среди разработчиков благодаря своей высокой производительности и универсальности. Эта технология выступает не просто хранилищем данных, а служит эффективным инструментом кэширования, очередей сообщений и реализации сложных структур данных в реальном времени.

Уникальность Redis заключается в её способности хранить различные типы данных — от простых строк до сложных структур, таких как списки, множества, хэш-таблицы и другие. Благодаря поддержке операций in-memory и возможности сохранения данных на диск, Redis обеспечивает непревзойденную скорость работы с данными при сохранении надежности.

Важно: перед установкой Redis убедитесь, что Ваша система соответствует минимальным системным требованиям и имеет актуальные системные обновления.

Важно иметь уровень доступа root. Настройку можно реализовать на наших услугах виртуальных и выделенных серверов.

Подготовка системы

Обновление системы

Для Debian/Ubuntu:
  1. sudo apt update
  2. sudo apt upgrade -y
Для CentOS/AlmaLinux/RockyLinux:
  1. sudo dnf update -y

Установка Redis

Debian/Ubuntu:
  1. # Загружаем и добавляем ключ для репозитория Redis
  2. curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
  3. # Добавляем репозиторий Redis в список источников APT
  4. echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
  5. # Устанавливаем Redis
  6. sudo apt install redis -y
CentOS/AlmaLinux/RockyLinux:
  1. sudo dnf install -y epel-release
  2. sudo dnf install -y redis

Базовая конфигурация Redis

  1. Редактирование конфигурационного файла:
  1. sudo nano /etc/redis/redis.conf
  1. Ключевые настройки безопасности:
# Ограничение прослушивания только для локального доступа
bind 127.0.0.1 ::1

# Установка надежного пароля
requirepass StrongRedisPassword2024!

# Ограничение использования памяти
maxmemory 2gb
maxmemory-policy allkeys-lru

# Отключение команд, которые могут использоваться для потенциального злоупотребления
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG ""
rename-command SHUTDOWN ""
rename-command DEBUG ""
  1. Сохранение и перезапуск службы:
  1. sudo systemctl restart redis-server
  1. Включение автозапуска службы:
  1. sudo systemctl enable redis
  1. Проверка активности автозапуска:
  1. systemctl is-enabled redis

Если команда вернет enabled, это означает, что автозапуск включен.

Может быть возвращен результат alias, это означает, что сервис redis работает через символическую ссылку (alias) на другой сервис. Обычно это происходит, если в Вашей системе redis настроен как “псевдоним” к другому сервису, например, redis-server.

Настройка межсетевых экранов

Информируем: для удобства ввода большого количества последовательных команд, Вам будет предоставлен пример с использованием Heredoc. Рассмотрим что это такое.

Heredoc (сокращенно от “here document”) является удобным механизмом в bash-скриптинге, который позволяет передавать многострочный текст или последовательность команд непосредственно в команду или интерпретатор. Синтаксис heredoc использует операторы << с произвольным разделителем (чаще всего EOF), что создает уникальный способ группировки и выполнения команд.

Механизм heredoc работает следующим образом:

  • Интерпретатор bash создает временный текстовый поток.
  • Все команды между маркерами <<EOF и EOF выполняются последовательно.
  • Позволяет группировать сложные последовательности команд без создания временных файлов.
  • Обеспечивает контролируемую передачу данных между командами.

Основное преимущество — возможность выполнения блока команд с повышенными правами (через sudo) без необходимости создания отдельного скрипта.

Настройка iptables:
  1. sudo bash << EOF
  2. # Полная конфигурация iptables для Redis
  3. iptables -F
  4. iptables -X
  5. # Базовые политики
  6. iptables -P INPUT DROP
  7. iptables -P FORWARD DROP
  8. iptables -P OUTPUT ACCEPT
  9. # Разрешение локальных соединений
  10. iptables -A INPUT -i lo -j ACCEPT
  11. # Разрешение установленных соединений
  12. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  13. # Разрешение SSH
  14. iptables -A INPUT -p tcp --dport 22 -j ACCEPT
  15. # Разрешение Redis из локальной сети
  16. iptables -A INPUT -p tcp -s 192.168.0.0/24 --dport 6379 -j ACCEPT
  17. # Закрытие порта Redis для внешних подключений
  18. iptables -A INPUT -p tcp --dport 6379 -j LOG --log-prefix "Redis Connection Attempt: "
  19. iptables -A INPUT -p tcp --dport 6379 -j DROP
  20. EOF

Сохранение правил:

  1. sudo apt install -y iptables-persistent
  2. netfilter-persistent save

При сохранении правил у Вас запросят подтверждение. Необходимо нажать Yes. Правила

Настройка firewalld:
  1. sudo bash << EOF
  2. # Установка и настройка firewalld
  3. dnf install -y firewalld
  4. # Запуск и активация службы
  5. systemctl enable firewalld
  6. systemctl start firewalld
  7. # Добавление правил для Redis
  8. firewall-cmd --permanent --add-port=6379/tcp
  9. firewall-cmd --permanent --add-rich-rule='
  10. rule family="ipv4"
  11. source address="192.168.0.0/24"
  12. port protocol="tcp" port="6379"
  13. accept'
  14. # Применение изменений
  15. firewall-cmd --reload
  16. EOF
Настройка UFW:
  1. sudo bash << EOF
  2. # Установка и базовая настройка UFW
  3. apt install -y ufw
  4. # Базовые политики
  5. ufw default deny incoming
  6. ufw default allow outgoing
  7. # Разрешение SSH
  8. ufw allow ssh
  9. # Разрешение Redis из локальной сети
  10. ufw allow from 192.168.0.0/24 to any port 6379
  11. # Активация UFW
  12. ufw enable
  13. EOF

Проверка статуса службы Redis

1. Проверка статуса системной службы Redis.

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

  1. sudo systemctl status redis

Вы увидите информацию о состоянии службы, включая активность и возможные ошибки.

Статус

2. Проверка работы Redis через redis-cli.

Для быстрой проверки, отвечает ли Redis:

  1. redis-cli ping

В ответ должно быть PONG, что указывает на корректную работу.

Понг

3. Проверка, прослушивает ли служба порт 6379 (порт по умолчанию).

Используйте netstat или ss, чтобы проверить, прослушивает ли Redis нужный порт:

  1. sudo netstat -lnp | grep 6379

Нетстат

Или с помощью ss:

  1. sudo ss -lnp | grep 6379

Если порт прослушивается, это подтверждает, что Redis работает.

Прослушивание портов

4. Дополнительная проверка конфигурации Redis.

Чтобы узнать активные параметры Redis, подключитесь к нему с помощью клиента:

  1. redis-cli

И введите команду:

  1. CONFIG GET *

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

Конфиг
Пример выполнения команды CONFIG GET *