Используемые термины: Redis , Ubuntu .
Мы рассмотрим инструкцию для установки Redis как на операционную систему Ubuntu, так и в качестве контейнера Docker . Данную СУБД, как правило, применяют для хранения временной информации, например, кэша или сессий. Ее преимущество — скорость.
Установка Redis
Чистая на систему
Запуск в качестве Docker-контейнера
Проверка подключения и выполнения запроса
Подключение по сети
Требование авторизации
Пример подключения и запросов с языков программирования
PHP
Python
Рассмотрим два варианта установки — чистая инсталляция на систему Linux Ubuntu и запуск контейнера из официального докер-образа.
Обновляем список пакетов:
apt-get update
Выполняем установку:
apt-get install redis-server
Открываем конфигурационный файл:
vi /etc/redis/redis.conf
Меняем значение для директивы supervised :
supervised systemd
* данная настройка позволит инициализировать запуск Redis как службы. В соответствии с официальной документацией, это позволит нам получить больше контроля над базой данных.
Разрешаем автозапуск сервиса:
systemctl enable redis-server
Перезапускаем redis-server:
systemctl restart redis-server
Наш сервер готов к работе.
Посмотреть версию установленной СУБД можно командой:
redis-server —version
Мы должны увидеть что-то на подобие:
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=636cde3b5c7a3923
* в данном примере установлена версия 5. На момент обновления данной инструкции последней версией была 6.
Необходимо, чтобы в нашей системе был установлен Docker .
После выполняем загрузку образа Redis:
docker pull redis
Запускаем контейнер:
docker run —name redis-server -d redis
Проверим, что наш контейнер запустился:
docker ps
Мы должны увидеть что-то на подобие:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a8c30431268c redis «docke…» 4 sec… Up 3… 6379/tcp redis-server
* наш сервис запущен на порту 6379 ; к нему можно обращаться по имени redis-server или ID a8c30431268c .
Мы подключимся к нашему локальному серверу командой redis-cli.
а) при установке на систему:
redis-cli
б) если запустили контейнер:
docker exec -it redis-server redis-cli
* где redis-server — имя контейнера, которое мы задали во время его запуска.
Мы должны увидеть строку ввода команд Redis:
127.0.0.1:6379>
Для проверки подключения к серверу выполним команду:
> ping
В ответ мы должны увидеть:
PONG
Попробуем создать пару ключ — значение. Для этого вводим:
> set test_key «A test value»
Теперь попробуем его получить:
> get test_key
Мы должны получить наше значение:
«A test value»
Также можно получить список всех ключей командой:
> KEYS *
Сервер работает. Выходим из редис-консоли:
> quit
Полный список команд для работы в redis-cli можно найти на tutorialspoint.com .
После установки Redis, к нему можно подключиться только локально. Чтобы мы могли использовать сервер баз данных для сетевых запросов, необходимо изменить настройки в конфигурационном файле. В зависимости от способа установки, наши действия будут отличаться.
Открываем конфигурационный файл:
vi /etc/redis/redis.conf
Находим строку:
bind 127.0.0.1 ::1
… и через запятую перечисляем IP-адреса сетевых интерфейсов сервера, на котором он должен принимать запросы:
bind 127.0.0.1 ::1 192.168.0.15
* в нашем примере мы добавили адрес 192.168.0.15 — предполагается, что это адрес нашего сервера.
Перезапускаем сервис:
systemctl restart redis-server
Готово, проверить, что сервер слушает нужный адрес можно командой:
ss -tunlp | grep :6379
По умолчанию, Redis в докере разрешаем сетевые подключения в сети docker и при подключении с локального сервера. Чтобы сделать доступным контейнер при обращении к хосту Docker, нужно запустить контейнер с опцией -p 6379:6379 .
Для начала, уничтожим запущенный контейнер:
docker container stop redis-server && docker container rm -v redis-server
И запустим его снова с нужной опцией:
docker run —name redis-server -p 6379:6379 -d redis
На компьютере, с которого мы хотим подключиться к нашему серверу должна быть установлена утилита redis-tools. Например, на Ubuntu или Debian ее можно поставить простой командой:
apt-get install redis-tools
После мы можем подключится к нашему серверу баз данных командой:
redis-cli -h 192.168.0.15
* где 192.168.0.15 — адрес сервера Redis.
Для подключения из Windows можно установить клиент AnotherRedisDesktopManager .
При необходимости, мы можем установить логин и пароль для подключения к Redis. Наши действия будут отличаться в зависимости от способа установки сервера баз данных.
Открываем конфигурационный файл:
vi /etc/redis/redis.conf
Снимаем комментарий с параметра requirepass и в качестве значения присваиваем парольное слово:
requirepass password
* в данном примере в качестве пароля используем слово password .
Перезапускаем сервис:
systemctl restart redis-server
Подключаемся к консоли ввода команд:
redis-cli
Авторизовываемся:
> auth password
* где password — наше парольное слово.
Если мы ввели правильный пароль, то система покажет:
OK
Теперь можно вводить запросы, например:
> get test_key
Для докера мы выполним запуск контейнера с помощью Docker Compose. Для начала, необходимо его установить .
Создаем каталог, в котором разместим конфигурационный файл на хосте докер:
mkdir -p /opt/docker/redis/etc
Создадим наш конфигурационный файл:
vi /opt/docker/redis/etc/redis.conf
requirepass password
* в данном примере в качестве пароля используем слово password .
Перейдем в каталог:
cd /opt/docker/redis/
Создадим файл docker-compose:
vi docker-compose.yml
redis:
image: redis
container_name: ‘redis-server’
restart: unless-stopped
ports:
— «6379:6379»
volumes:
— /opt/docker/redis/etc:/usr/local/etc/redis
command: [ «redis-server», «/usr/local/etc/redis/redis.conf» ]
* в данном примере мы запускаем контейнер redis-server из образа redis ; сервис должен работать на порту 6379 ; также мы пробросим созданный каталог /opt/docker/redis/etc внутри контейнера в /usr/local/etc/redis ; наконец, запуск сервиса будет выполнен с параметром /usr/local/etc/redis/redis.conf — нашим конфигурационным файлом.
Уничтожаем ранее запущенный контейнер:
docker container stop redis-server && docker container rm -v redis-server
Запускаем новый с помощью docker-compose:
docker-compose up -d
Теперь можно подключиться к консоли redis-cli:
docker exec -it redis-server redis-cli
Авторизоваться:
> auth password
* где password — пароль, заданный в конфигурационном файле.
Мы должны увидеть:
OK
Можно попробовать ввести запросы:
> get test_key
Рассмотрим примеры подключения и выполнения запросов из нескольких языков программирования.
Устанавливаем необходимые зависимости для PHP — пример для Ubuntu / Debian:
apt-get install php-pear php-dev
Также нам нужно установить расширение pecl — обновляем канал:
pecl channel-update pecl.php.net
И компилируем расширение:
pecl install redis
Для каждого возможного варианта использования PHP необходимо создать отдельный конфигурационной файл. В данном примере, под php 7.4 для cli, php-fpm, apache.
В системах на базе RPM (например, CentOS или Red Hat), нет разделения php на версии. Таким образом, нам нужно будет создать только один файл (как правило, в каталоге /etc/php.d).
а) CLI
vi /etc/php/7.4/cli/conf.d/20-redis.ini
extension=redis.so
б) PHP-FPM
vi /etc/php/7.4/fpm/conf.d/20-redis.ini
extension=redis.so
в) APACHE
vi /etc/php/7.4/apache/conf.d/20-redis.ini
extension=redis.so
Проверяем, что в php появился новый модуль:
php -m | grep redis
Мы должны увидеть:
redis
Создаем каталог для нашего скрипта:
mkdir /scripts
Создаем сам скрипт:
vi /scripts/test_redis.php
* в данном скрипте мы подключаемся к нашему локальному серверу Redis, авторизовываемся и создаем ключ test_php_key со значением test php value . В конечном итоге, скрипт должен нам вернуть данное значение.
Запускаем на выполнение данный скрипт:
php /scripts/test_redis.php
Мы должны увидеть:
test php value
Устанавливаем необходимое расширение:
pip3 install redis
Создаем каталог для размещения скрипта:
mkdir /scripts
Создаем сам скрипт:
vi /scripts/test_redis.py
* в данном скрипте мы подключаемся к нашему локальному серверу Redis, авторизовываемся и создаем ключ test_py_key со значением test py value . В конечном итоге, скрипт должен нам вернуть данное значение.
Разрешаем запускать наш скрипт на выполнение:
chmod +x /scripts/redis.py
Запускаем скрипт:
/scripts/test_redis.py
Мы должны получить в качестве ответа:
b’test py value’
Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…
Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…
Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…
Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…
YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…
Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…