Запуск REDIS в Docker-контейнере
Сервис запущен на порту 6379; к нему можно обращаться по имени redis-server или ID 9cd35e6ebe2d .
Подключимся к серверу командой redis-cli.
docker exec -it redis-server redis-cli
redis-server — имя контейнера, которое задали во время его запуска.
Должна появится строка ввода команд Redis:
127.0.0.1:6379>
Для проверки подключения к серверу выполнить команду:
> ping
Ответ
PONG
Создадим пару ключ — значение. Для этого вводим:
> set simple_key «Simple value»
Попробуем его получить
> get simple_key
Должны получить значение:
«Simple value»
Получим список всех ключей командой:
> KEYS *
Выходим из редис-консоли:
> quit
Теги
- Войдите или зарегистрируйтесь, чтобы оставлять комментарии
Как установить Redis в Docker и Docker Compose
В этой статье мы рассмотрим, как развернуть Redis в Docker и в файле Docker Compose.
Redis — это высокопроизводительная система управления базами данных, которая используется для хранения и обработки данных в памяти. Redis позволяет эффективно обрабатывать большие объемы данных и обеспечивает высокую доступность и отказоустойчивость.
Установка Docker и Docker Compose
Прежде чем начать, вам необходимо установить Docker и Docker Compose. Вы можете найти инструкции по установке Docker для своей операционной системы на нашем блоге для Centos 7 или для Ubuntu 20.04.
Установим Docker-Compose
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Устанавливаем права на запуск.
chmod +x /usr/local/bin/docker-compose
Проверяем как установился Docker-Compose:
docker-compose --version
Создание Docker Compose файла
Для развертывания Redis с использованием Docker Compose, нам нужно создать файл docker-compose.yaml в корневой директории нашего проекта. Он будет содержать настройки для Redis-контейнера.
Что бы ориентироваться в будущем в том что у нас установлено, создадим отдельную папку для данного проекта в каталоге /home и перейдем в него.
mkdir /home/redis && cd /home/redis

Вы так же можете использовать другую директорию для размещения этого и других проектов.
Воспользуемся репозиторием для создания файла docker-compose.yaml по ссылке https://hub.docker.com/_/redis
Создадим файл *.yaml для Docker-Compose.
version: '3.3' services: redis: image: redis:latest restart: always ports: - "6379:6379" volumes: - /path/to/local/dаta:/root/redis - /path/to/local/redis.conf:/usr/local/etc/redis/redis.conf environment: - REDIS_PASSWORD=my-password - REDIS_PORT=6379 - REDIS_DATABASES=16

Давайте рассмотрим каждый параметр:
version — это версия формата файла Docker Compose. Мы используем версию 3.3.
services — это раздел, где мы определяем список контейнеров и их настроек. В нашем случае мы определяем один сервис — Redis.
redis — это имя нашего сервиса.
image — это имя образа Redis, который мы будем использовать для создания нашего контейнера.
restart — это настройка, которая указывает Docker перезапускать контейнер Redis в случае его остановки или сбоя.
ports — это настройка, которая определяет, какие порты контейнера должны быть доступны на хост-системе. В данном случае мы пробрасываем порт 6379 контейнера Redis на порт 6379 хост-системы.
volumes — это настройка, которая определяет, какие директории на хост-системе должны быть доступны внутри контейнера. В данном случае мы монтируем директории с данными и конфигурационными файлами Redis.
environment — это настройка, которая позволяет определить переменные среды для контейнера Redis. В данном случае мы определяем пароль, порт и количество баз данных Redis.
REDIS_PASSWORD: my-password определяет переменную REDIS_PASSWORD со значением my-password.
REDIS_PORT: 6379 определяет порт Redis, который будет использоваться в контейнере. По умолчанию Redis использует порт 6379, поэтому эта переменная может использоваться для изменения порта на другой, если это необходимо.
REDIS_DATABASES: 16 определяет количество баз данных Redis, которые будут доступны в контейнере. По умолчанию Redis поддерживает 16 баз данных, но этот параметр можно изменить с помощью этой переменной.
Запуск Redis
Теперь, когда у нас есть файл docker-compose.yaml, и мы можем запустить Redis контейнер с помощью команды:
docker-compose up -d

Эта команда запускает контейнер Redis в фоновом режиме (опция -d). Docker Compose будет автоматически загружать и создавать контейнер Redis на основе настроек, указанных в файле docker-compose.yaml.
Вы можете проверить, запущен ли контейнер Redis, выполнив команду:
docker ps | grep redis

Мы можем запустить контейнер Redis без использования файла docker-compose.yaml с помощью следующей команды Docker:
docker run -d --name my-redis-container -p 6379:6379 -v /path/to/local/dаta:/root/redis -v /path/to/local/redis.conf:/usr/local/etc/redis/redis.conf -e REDIS_PASSWORD=my-password -e REDIS_PORT=6379 -e REDIS_DATABASES=16 redis:latest
Подключение к Redis
Вы можете подключиться к Redis контейнеру с помощью любого клиента Redis. Для этого вам понадобится IP-адрес вашей хост-системы и порт, который вы определили в файле docker-compose.yaml.
Например, если вы используете стандартный клиент Redis, вы можете подключиться к контейнеру Redis, выполнив команду:
redis-cli -h 172.27.0.2 -p 6379

Где 172.27.0.2 это IP докер контейнера на котором работает Redis. Что бы его узнать, командой docker ps | grep redis узнаем ID нашего контейнера или воспользуемся его названием.
docker inspect --format='>>>' redis_redis_1

Где redis_redis_1 — название контейнера, IP-адрес которого нужно отфильтровать.
Эта команда использует флаг —format для форматирования вывода, в котором используется функция range для перебора всех сетей контейнера, и выводится только IP-адрес каждой сети. Если контейнер имеет несколько сетей, то будут выведены все их IP-адреса. Если же контейнер подключен только к одной сети, то будет выведен только ее IP-адрес.
Эта команда redis-cli -h 172.27.0.2 -p 6379 — подключится к Redis, запущенному на локальной машине и прослушивающему порту 6379.
Для подключения из CMS систем, используйте встроенные плагины.
И так, в этой статье мы рассмотрели, как развернуть Redis в Docker и Docker Compose. Мы создали файл docker-compose.yaml, с настройками для контейнера Redis.
Введение и установка — Основы Redis
Представьте, что вы пишете back-end небольшого интернет-магазина, состоящего из серверного приложения с бизнес-логикой и реляционной базы данных:
Первое время архитектура покрывает все ваши нужды: товары отображаются, заказы создаются быстро. Но со временем проект усложняется. Чаще всего это вызвано двумя факторами:
- продукт требует новой бизнес-логики
- рост пользовательской базы несет дополнительную нагрузку на сервера
В определенный момент реляционной системы управления базами данных (далее «РСУБД») становится недостаточно и в архитектуре появляются дополнительные технологии для решения конкретных проблем.
Несколько примеров практических задач, когда РСУБД — неподходящее или неоптимальное решение:
- отображение количества пользователей, находящихся на странице в режиме реального времени
- ускорение времени ответа на тяжелый HTTP запрос
- отложенная отправка писем/смс при оформлении заказа
- отображение недавних покупок/просмотренных товаров на всех платформах
Для эффективного решения вышеописанных задач подходит open-source база данных Redis. Сегодня тысячи компаний, включая Instagram, Twitter, Uber, Airbnb, выбирают Redis за его скорость и масштабируемость.
Все основные варианты использования Redis будут рассмотрены по ходу этого курса. Сейчас достаточно знать главные особенности этого хранилища:
- in-memory означает, что данные хранятся в оперативной памяти. Это накладывает ограничение на объем данных, который хранится в Redis, но дает более быстрое чтение и запись по сравнению с длительными хранилищами (NVME, SSD, HDD)
- KV хранилище (key-value). В Redis нет таблиц, схем или каких-либо других абстракций для доступа к данным. Все данные записываются и получаются по ключам. Вследствие этого основные операции выполняются за O(1)
Установка
Несмотря на то, что вся практика для данного курса выполняется в нашей среде, это не отменяет необходимости умения работать с базой локально. Более того, эффективное обучение невозможно без повторения примеров из уроков в своей среде. Поэтому, перед тем, как начать, необходимо установить Redis локально.
Ссылка для скачивания
Через пакетный менеджер вашей операционной системы
install redis
sudo add-apt-repository ppa:redislabs/redis sudo apt-get update sudo apt-get install redis
Через Docker
--name local-redis -d redis
Подключение
Локальное подключение
После установки Redis сервер нужно запускать вручную:
# oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 11760:C 07 Dec 2021 18:25:26.103 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=11760, just started 11760:C 07 Dec 2021 18:25:26.103 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf 11760:M 07 Dec 2021 18:25:26.104 * Increased maximum number of open files to 10032 (it was originally set to 256). 11760:M 07 Dec 2021 18:25:26.104 * monotonic clock: POSIX clock_gettime _._ _.-``__ ''-._ _.-`` `. `_. ''-._ Redis 6.2.6 (00000000/0) 64 bit .-`` .-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in standalone mode |`-._`-. -` __. -.``-._|'` _.-'| Port: 6379 | `-._ `._ / _.-' | PID: 11760 `-._ `-._ `-./ _.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | https://redis.io `-._ `-._`-.__.-'_.-' _.-' |`-._`-._ `-.__.-' _.-'_.-'| | `-._`-._ _.-'_.-' | `-._ `-._`-.__.-'_.-' _.-' `-._ `-.__.-' _.-' `-._ _.-' `-.__.-' 11760:M 07 Dec 2021 18:25:26.105 # Server initialized 11760:M 07 Dec 2021 18:25:26.105 * Ready to accept connections
Такой способ подходит для академических целей, но не используется в производственных окружениях. Обычно Redis сервер запускается как демон (daemon):
--daemonize yes
Когда сервер запущен, можно попробовать подключиться к нему с помощью утилиты redis-cli :
Чтобы удостовериться, что сервер работает корректно, достаточно запустить команду info :
# Server redis_version:6.2.6 redis_git_sha1:00000000 redis_git_dirty:0 redis_build_id:c6f3693d1aced7d9 redis_mode:standalone os:Darwin 19.5.0 x86_64 arch_bits:64 .
Подключение с Docker
В разделе установки через Docker Redis сервер запускается в контейнере с именем local-redis. Используем это же имя для подключения:
exec -it local-redis redis-cli
Резюме
- Redis — это очень быстрая key-value БД, хранящая все данные в оперативной памяти
- В зависимости от задачи Redis может быть и базой данных, и кэшом, и даже брокером сообщений
- Важно установить Redis локально и поработать с ним из терминала, так как взаимодействие из любого языка программирования происходит через такие же CLI-команды
Что будет дальше
В этом курсе рассматриваются основные варианты использования Redis с практическими примерами:
- key-value база данных
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Запуск redis в docker
Есть бэкенд написанный на lumen(laravel), который подключается к redis. Когда запускаю локальный php и локальный redis, то все работает. Когда запускаю через докер выдает ошибку: Connection refused [tcp://127.0.0.1:6379] . Сборка php (Dockerfile):
FROM php:7.2-fpm RUN apt-get update \ && chown -R www-data:www-data /var/www/html \ && chmod -R 777 /var/www/html RUN pecl install redis && docker-php-ext-enable redis
Файл docker-compose.yml:
nginx: image: nginx:latest ports: - 127.0.0.1:80:80 volumes: - .:/var/www/html - ./docker/config/nginx:/etc/nginx/conf.d - ./docker/logs/nginx:/var/log/nginx links: - php-fpm php-fpm: build: context: ./docker/php-fpm volumes: - .:/var/www/html redis: image: redis restart: always ports: - 127.0.0.1:6379:6379 logging: driver: none
В чем может быть проблема? Может я какой-то порт не открыл?