Установка, настройка и работа с Redis на 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

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

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 можно найти на официальном сайте.

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

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

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

redis-cli

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

> auth password

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

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

OK

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

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

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

OK

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

> 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

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

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 "\r\n";
  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'

# DevOps # Ubuntu # Базы данных
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет