Как установить и работать с Redis на сервере под управлением Linux Ubuntu

Мы предоставляем услуги удаленного администрирования серверов

Как установить и работать с Redis на сервере под управлением Linux Ubuntu

Опубликовано:

Используемые термины: Redis, Ubuntu.

Мы рассмотрим инструкцию для установки Redis как на операционную систему Ubuntu, так и в качестве контейнера Docker. Данную СУБД, как правило, применяют для хранения временной информации, например, кэша или сессий. Ее преимущество — скорость.

Установка, начальная настройка и запуск

Рассмотрим два варианта установки — чистая инсталляция на систему Linux Ubuntu и запуск контейнера из официального докер-образа.

Операционная система 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

Необходимо, чтобы в нашей системе был установлен Docker.

После выполняем загрузку образа Redis:

docker pull redis

Запускаем контейнер:

docker run —name redis-server -d redis

Проверим, что наш контейнер запустился:

Мы должны увидеть что-то на подобие:

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.

а) при установке на систему:

б) если запустили контейнер:

docker exec -it redis-server redis-cli

* где redis-server — имя контейнера, которое мы задали во время его запуска.

Мы должны увидеть строку ввода команд Redis:

127.0.0.1:6379>

Для проверки подключения к серверу выполним команду:

В ответ мы должны увидеть:

Попробуем создать пару ключ — значение. Для этого вводим:

> set test_key «A test value»

Теперь попробуем его получить:

> get test_key

Мы должны получить наше значение:

«A test value»

Также можно получить список всех ключей командой:

Сервер работает. Выходим из редис-консоли:

Доступ по сети

После установки 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

б) Запуск в Docker

По умолчанию, 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

Подключаемся к консоли ввода команд:

Авторизовываемся:

> auth password

* где password — наше парольное слово.

Если мы ввели правильный пароль, то система покажет:

Теперь можно вводить запросы, например:

> get test_key

б) Запуск в Docker

Для докера мы выполним запуск контейнера с помощью 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 — пароль, заданный в конфигурационном файле.

Мы должны увидеть:

Можно попробовать ввести запросы:

> get test_key

Пример подключения из языков программирования

Рассмотрим примеры подключения и выполнения запросов из нескольких языков программирования.

PHP

Устанавливаем необходимые зависимости для 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

Мы должны увидеть:

Создаем каталог для нашего скрипта:

mkdir /scripts

Создаем сам скрипт:

vi /scripts/test_redis.php

  1. <?php
  2.   
  3. $redis = new Redis();
  4.  
  5. $redis->connect(‘localhost’, 6379);
  6. $redis->auth(‘password’);
  7.  
  8. $redis->set(«test_php_key», «test php value»);
  9. echo $redis->get(«test_php_key»);
  10. echo «rn»;
  11.  
  12. ?>

* в данном скрипте мы подключаемся к нашему локальному серверу Redis, авторизовываемся и создаем ключ test_php_key со значением test php value. В конечном итоге, скрипт должен нам вернуть данное значение.

Запускаем на выполнение данный скрипт:

php /scripts/test_redis.php

Мы должны увидеть:

test php value

Python

Устанавливаем необходимое расширение:

pip3 install redis

Создаем каталог для размещения скрипта:

mkdir /scripts

Создаем сам скрипт:

vi /scripts/test_redis.py

  1. #!/usr/bin/env python3
  2. # -*- encoding: utf-8 -*-
  3.  
  4. import redis
  5.  
  6. r = redis.Redis(host=’localhost’, port=6379, db=0, password=’password’)
  7. r.set(‘test_py_key’, ‘test py value’)
  8.  
  9. redis_get = r.get(‘test_py_key’)
  10. print(redis_get)

* в данном скрипте мы подключаемся к нашему локальному серверу Redis, авторизовываемся и создаем ключ test_py_key со значением test py value. В конечном итоге, скрипт должен нам вернуть данное значение.

Разрешаем запускать наш скрипт на выполнение:

chmod +x /scripts/redis.py

Запускаем скрипт:

/scripts/test_redis.py

Мы должны получить в качестве ответа:

b’test py value’


   Мы принимаем