15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
31.10.2024
1 +1

Как установить и настроить Redis на Linux: полное пошаговое руководство

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

Что такое Redis и почему его следует использовать?

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

  • Хранилище в памяти: Redis хранит данные в RAM, что делает операции чтения и записи чрезвычайно быстрыми — часто выполняются менее чем за миллисекунду.
  • Универсальные структуры данных: поддерживает строки, хэши, списки, наборы, отсортированные наборы, битовые карты и многое другое.
  • Опции сохранения: несмотря на то, что Redis находится в памяти, он может сохранять данные на диск для сохранения при перезагрузке.
  • Обмен сообщениями Pub/Sub: Redis поддерживает шаблоны обмена сообщениями publish/subscribe для связи в реальном времени между сервисами.
  • Широкая поддержка языков: официальные клиентские библиотеки существуют для Python, PHP, Node.js, Java, Ruby, Go и многих других.

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

Предварительные требования

Перед началом убедитесь, что у вас есть:

  • Сервер Linux, работающий на Ubuntu/Debian или CentOS/RHEL
  • Доступ root или sudo к серверу
  • Базовое понимание командной строки Linux
  • Активное подключение к интернету для загрузки пакетов

Шаг 1: обновите вашу систему

Всегда начинайте с обновления индекса пакетов вашей системы и обновления установленных пакетов до их последних версий. Это обеспечивает совместимость и безопасность:

sudo apt update && sudo apt upgrade -y

Для систем CentOS/RHEL:

sudo yum update -y

Поддержание вашего сервера в актуальном состоянии — это фундаментальная практика безопасности, особенно в производственных средах.

Шаг 2: установите Redis

Большинство основных дистрибутивов Linux включают Redis в свои официальные репозитории пакетов, что делает установку простой.

На Ubuntu / Debian

sudo apt install redis-server -y

На CentOS / RHEL

Системы CentOS/RHEL требуют предварительного включения репозитория EPEL (Extra Packages for Enterprise Linux):

sudo yum install epel-release -y
sudo yum install redis -y

> Примечание: в новых версиях CentOS/RHEL (8+) вы можете использовать dnf вместо yum:

> “`bash

> sudo dnf install redis -y

> “`

Шаг 3: проверьте установку

После завершения установки подтвердите, что Redis был установлен правильно, проверив его версию:

redis-server --version

Ожидаемый результат (пример):

Redis server v=7.0.12 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=...

Если вы видите номер версии, Redis успешно установлен в вашей системе.

Шаг 4: запустите и включите сервис Redis

После установки вам нужно запустить сервис Redis и настроить его на автоматический запуск при загрузке системы.

На Ubuntu / Debian

sudo systemctl start redis
sudo systemctl enable redis

На CentOS / RHEL

sudo systemctl start redis
sudo systemctl enable redis

Проверьте, работает ли Redis

sudo systemctl status redis

Ожидаемый результат:

● redis.service - Advanced key-value store
   Loaded: loaded (/lib/systemd/system/redis.service; enabled)
   Active: active (running) since ...

Зеленый статус active (running) подтверждает, что Redis работает правильно.

Шаг 5: настройте Redis

Поведение Redis контролируется его основным файлом конфигурации:

  • Ubuntu/Debian: /etc/redis/redis.conf
  • CentOS/RHEL: /etc/redis.conf

Откройте файл конфигурации с помощью текстового редактора:

sudo nano /etc/redis/redis.conf

Ниже приведены наиболее важные параметры конфигурации, которые вы должны проверить и отрегулировать.

5.1 установите пароль (аутентификация)

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

Найдите строку, содержащую # requirepass и обновите ее:

requirepass your_strong_password_here

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

5.2 привяжите IP-адрес

По умолчанию Redis привязывается только к 127.0.0.1 (localhost), что предотвращает внешний доступ. Это самый безопасный параметр по умолчанию.

Если вашему приложению нужно подключиться к Redis с другого сервера, вы можете привязать дополнительный IP-адрес:

bind 127.0.0.1 192.168.1.100

> Предупреждение безопасности: никогда не привязывайте Redis к 0.0.0.0 (все интерфейсы) на общедоступном сервере без надлежащих правил брандмауэра. Открытые экземпляры Redis — это распространенный вектор атак.

5.3 измените порт по умолчанию

Redis прослушивает порт 6379 по умолчанию. Изменение этого порта добавляет слой неясности:

port 6380

Помните об обновлении правил брандмауэра и строк подключения приложения, если вы измените порт.

5.4 примените изменения конфигурации

После редактирования redis.conf перезагрузите сервис Redis, чтобы применить все изменения:

sudo systemctl restart redis

Шаг 6: протестируйте установку Redis

Используйте встроенный Redis CLI (интерфейс командной строки) для проверки правильной работы Redis:

redis-cli

Если вы установили пароль, сначала аутентифицируйтесь:

AUTH your_strong_password_here

Запустите тест Ping

ping

Ожидаемый ответ:

PONG

установите и получите пару ключ-значение

SET mykey "Hello, Redis!"
GET mykey

Ожидаемый ответ:

"Hello, Redis!"

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

выйти из CLI

exit

Шаг 7: настройте Redis как фоновый демон (опционально)

Если вы хотите, чтобы Redis работал как фоновый процесс демона (а не как процесс переднего плана), настройте опцию daemonize в redis.conf:

daemonize yes

После сохранения файла перезагрузите Redis:

sudo systemctl restart redis

Проверьте, что сервис работает в фоне:

sudo systemctl status redis

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

ps aux | grep redis

Шаг 8: включите сохранение Redis (опционально, но рекомендуется)

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

Вариант 1: RDB (Redis Database Backup) — снимки состояния

RDB создает снимки состояния вашего набора данных в определенные моменты времени. Настройте его в redis.conf:

# Save a snapshot if at least 1 key changed in 900 seconds (15 minutes)
save 900 1

# Save a snapshot if at least 10 keys changed in 300 seconds (5 minutes)
save 300 10

# Save a snapshot if at least 10,000 keys changed in 60 seconds
save 60 10000

RDB эффективен для резервного копирования и восстановления после сбоев, но может потерять данные, записанные между снимками состояния.

Вариант 2: AOF (Append Only File) — логирование записей

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

appendonly yes

Вы также можете настроить политику синхронизации AOF:

# Options: always, everysec, no
appendfsync everysec
  • always — самый безопасный, но самый медленный (синхронизируется после каждой записи)
  • everysec — хороший баланс производительности и безопасности (синхронизируется каждую секунду)
  • no — самый быстрый, но зависит от расписания сброса ОС

> Лучшая практика: для производственных сред используйте RDB и AOF вместе для максимальной долговечности данных.

Шаг 9: защита Redis — лучшие практики

Безопасность критична для любого развертывания Redis. Следуйте этим лучшим практикам для усиления вашего экземпляра Redis:

1. включите аутентификацию по паролю

Как описано на шаге 5.1, всегда устанавливайте надежное значение requirepass в redis.conf.

2. ограничьте сетевой доступ

  • Привяжите Redis к 127.0.0.1 если удаленный доступ явно не требуется.
  • Используйте частную сеть или VPN для связи Redis между серверами.

3. настройте правила брандмауэра

Разрешите трафик Redis только с доверенных IP-адресов. Используя ufw на Ubuntu:

sudo ufw allow from 192.168.1.0/24 to any port 6379
sudo ufw deny 6379

Используя firewalld на CentOS/RHEL:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="6379" accept'
sudo firewall-cmd --reload

4. переименуйте или отключите опасные команды

Redis имеет мощные административные команды (такие как FLUSHALL, CONFIG, DEBUG), которые могут быть использованы. Переименуйте или отключите их в redis.conf:

rename-command FLUSHALL ""
rename-command CONFIG "SECURE_CONFIG_XYZ123"
rename-command DEBUG ""

5. запустите Redis от непривилегированного пользователя

Пакет Redis в большинстве дистрибутивов уже создает выделенного пользователя системы redis. Убедитесь, что Redis никогда не запускается от root.

6. поддерживайте Redis в актуальном состоянии

Регулярно обновляйте Redis для исправления известных уязвимостей:

sudo apt update && sudo apt upgrade redis-server -y

Шаг 10: интеграция Redis с вашими приложениями

С установленным и защищенным Redis вы можете интегрировать его в стек вашего приложения. Вот краткий обзор популярных интеграций языков:

Python — redis-py

pip install redis
import redis

r = redis.Redis(host='127.0.0.1', port=6379, password='your_password', decode_responses=True)
r.set('greeting', 'Hello from Python!')
print(r.get('greeting'))

PHP — расширение phpredis

sudo apt install php-redis -y
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('your_password');
$redis->set('greeting', 'Hello from PHP!');
echo $redis->get('greeting');
?>

Node.js — ioredis

npm install ioredis
const Redis = require('ioredis');
const redis = new Redis({ host: '127.0.0.1', port: 6379, password: 'your_password' });

redis.set('greeting', 'Hello from Node.js!');
redis.get('greeting').then(value => console.log(value));

Redis легко интегрируется практически с каждой современной веб-фреймворком и CMS, включая WordPress, Laravel, Django и Express.js — что делает его неоценимым инструментом для стека любого разработчика.

распространенные варианты использования Redis

Понимание того, где Redis превосходит, помогает вам максимально использовать ваше развертывание:

Вариант использованияОписание
Хранилище сеансовСохраняйте пользовательские сеансы в Redis для быстрого и масштабируемого доступа на нескольких серверах приложений
Кэширование базы данныхКэшируйте результаты дорогостоящих SQL-запросов, чтобы снизить нагрузку на базу данных
Ограничение скоростиОтслеживайте количество запросов API на пользователя/IP, используя счетчики Redis
Таблицы лидеров в реальном времениИспользуйте отсортированные наборы
15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать