Appearance
Redis сервер: Полное руководство
https://habr.com/ru/articles/821363/
Что такое Redis?
Redis (Remote Dictionary Server)
— это мощная in-memory
база данных с открытым исходным кодом, которая используется для кеширования, управления сессиями и многого другого. Она обеспечивает высокую производительность и позволяет эффективно хранить и извлекать данные в реальном времени. В этом руководстве мы рассмотрим два способа установки и настройки Redis
сервера:
- на
Windows 10/11
черезWSL
(Windows Subsystem for Linux) - на
VPS
сервере.
Установка Linux Ubuntu на Windows 10/11 и Redis
Запустите командную строку. Ввод команды установки WSL:
shell
wsl --install
Если WSL
еще не установлен, начнется загрузка и установка дистрибутива Ubuntu
.
После завершения установки, создайте имя пользователя и пароль.
Если установка была выполнена ранее, то после ввода этой команды произойдет запуск wsl
.
Запуск Linux Ubuntu на Windows 10/11
Запустите Ubuntu через командную строку или через меню «Пуск». Используйте команду:
shell
wsl
Можете изменить дистрибутив Ubuntu на любой другой доступный. Посмотреть список доступных дистрибутивов можно командой:
shell
wsl --list --online
Для установки нового дистрибутива используйте команду:
shell
wsl --install -d <Distribution Name>
Замените <Distribution Name>
именем дистрибутива, который хотите установить. Например:
shell
wsl --install -d Debian
Для запуска конкретного дистрибутива используйте команду:
shell
wsl -d <DistributionName>
В данном примере мы оставим Ubuntu
.
Установка и настройка Redis
Server на Windows под Ubuntu
Заходим в Ubuntu и приступаем к настройке Redis
:
shell
sudo apt update -y
sudo apt upgrade -y
Добавление репозитория:
shell
sudo apt-add-repository ppa:redislabs/redis
Обновление пакетов:
shell
sudo apt-get update -y
sudo apt-get upgrade -y
Установка Redis
сервера:
shell
sudo apt-get install redis-server -y
Перезагрузка Redis
сервера:
shell
sudo service redis-server restart
Проверка состояния сервера:
shell
sudo service redis-server status
Если результат такой же, как на скриншоте, значит сервер Redis
запущен и готов к использованию.
Дополнительные настройки для удалённого доступа
Инструкции аналогичны до момента, где вы настроили ваш VPS
сервер на Linux
и установили Redis
сервер. Далее следуют некоторые отличия.
Если планируете использовать Redis
сервер с другими серверами или с вашей локальной машины, необходимо изменить конфигурацию.
Откройте конфигурационный файл Redis
:
shell
sudo nano /etc/redis/redis.conf
Измените следующие параметры:
- Замените bind 127.0.0.1 -::1 на bind 0.0.0.0
- Замените #requirepass foobared на requirepass your_password
Сохраните изменения и закройте файл, нажав CTRL + X
, затем Y
для подтверждения сохранения и ENTER
.
Перезапустите Redis
сервер:
shell
sudo service redis-server restart
Проверьте статус сервера:
shell
sudo service redis-server status
Если ошибок нет, значит всё настроено корректно.
Зачем мы изменяем настройки bind
и #requirepass foobared
на requirepass your_password
в Redis
?
- Изменение bind 127.0.0.1 -::1 на bind 0.0.0.0
- Эта настройка позволяет серверу принимать соединения на всех сетевых интерфейсах. То есть,
Redis
будет доступен для подключения с любых IP-адресов, что необходимо, если вы хотите подключаться к серверу удалённо с других машин или серверов. - Причина изменения: Для обеспечения удалённого доступа к
Redis
серверу, чтобы можно было использовать его из различных приложений и с разных серверов
Изменение #requirepass foobared
на requirepass your_password
Причина изменения: По умолчанию пароль для подключения не задан, а этим параметром установили пароль для подключения. Тут очень важно чтоб пароль был надежен, особенно когда вы установили bind 0.0.0.0
Перезапустите Redis
сервер, чтобы применить изменения:
shell
sudo service redis-server restart
Подключение к Redis:
В зависимости от того использовали вы пароль или нет может быть 2 варианта подключения:
- через ссылку (с паролем и без)
- через указание параметров подключения вместе с паролем и username
По умолчанию username = "default"
. В большинстве случаев этого достаточно, но если вы хотите добавить отдельного пользователя со своим именем и паролем, то необходимо воспользоваться утилитой redis-cli
.
Заходим на сервер где развернут Redis
используя команду
shell
redis-cli -a your_pass
Вводим команду:
shell
ACL SETUSER new_user_name on ~* +@all
В этой команде:
new_user_name
- это имя нового пользователя.on
- указывает на включение пользователя.~*
- разрешает доступ ко всем ключам.+@all
- разрешает выполнение всех команд
Установка пароля для нового пользователя (опционально):
Если вы хотите установить пароль для нового пользователя, добавьте параметр RESETPASS
с указанием нового пароля:
shell
ACL SETUSER newuser on ~* +@all RESETPASS your_new_password
Обратите внимание. Пароль необходимо передавать в хэшированном виде. Вот пример реализации на python.
python
import hashlib
password = 'your_pass'
password_hash = hashlib.sha256(password.encode()).hexdigest()
print(password_hash) # результат 8e498bfcf8aa1fa28a764b8eeb5546f44c0c24dba0c6587b112ced55f688a4f6
И после этого установка пароля будет выглядеть так:
shell
ACL SETUSER new_user_name on ~* +@all RESETPASS #8e498bfcf8aa1fa28a764b8eeb5546f44c0c24dba0c6587b112ced55f688a4f6
Работа с Redis
Сильно акцентировать внимание на этом не буду, так как можете писать на разных языках программирования и использовать redis
под разные задачи. Но общие принципы покажу, как подключаться в контексте телеграмм ботов (будем Redis
использовать в качестве storage
для FSM
на aiogram 3
).
Устанавливаем redis
shell
pip install redis
Импортируем хранилище:
python
from aiogram.fsm.storage.redis import RedisStorage
Инициируем storage по ссылке без пароля:
python
storage = RedisStorage.from_url('redis://HOST:6379/0')
Обратите внимание на формат ссылки. Она состоит из нескольких частей:
redis://
- указываем что подключаемся к RedisHOST
- это IP-адрес сервера или "localhost", если запустилиRedis
на локальной машине6379
- это порт по умолчанию. изменить можно через config0
- это номер базы данных. По умолчанию вRedis
баз данных 16 штук (от 0 до 15). Число можно увеличить через config.
Обратите внимание, что если в подключении имеется пароль, то данный метод не сработает.
Инициируем storage по ссылке с паролем и пользователем:
python
storage = RedisStorage.from_url('redis://username:password@193.3.168.217:6379/0')
Обратите внимание на формат ссылки. Тут дополнительно передаем пользователя и пароль для подключения. Пароль на этом этапе передаем в обычном виде (не в виде хэша).
Напоминаю, что если вы не добавляли пользователя отдельно, то его username = "default"
Подключение к Redis
с явным указанием параметров в python:
python
import redis
r = redis.Redis(host='HOST', port=6379, db=0, username='username', password='your_pass')
# Тестируем соединение:
try:
info = r.info()
print(info['redis_version'])
response = r.ping()
if response:
print("Подключение успешно!")
else:
print("Не удалось подключиться к Redis.")
except redis.exceptions.RedisError as e:
print(f"Ошибка: {e}")
Смотрим на консоль:
shell
7.2.5
Подключение успешно!
r.ping()
отправляет команду PING
к Redis
. Если Redis
отвечает, метод вернет True
. Так же получили версию redis
на сервере к которому подключались, а значит, что все сработало!
Заключение
Поднятие Redis
сервера на различных платформах предоставляет множество возможностей для эффективного управления данными. Будь то кеширование, сессии или другие задачи, Redis
обеспечивает высокую производительность и надёжность. Следуя данному руководству, вы сможете легко развернуть и настроить Redis
сервер на Windows
через WSL
или на VPS
, и начать использовать его в своих проектах.