Запуск 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
Представьте, что вы пишете 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 для продуктового использования
Прочитав эту статью вы научитесь использовать современный способ запуска Redis как безопасного приложения Docker.
Redis — популярное хранилище вида «ключ-значение» в памяти и не только — он позволяет организовывать другие хранилища, например, для множеств, очередей сообщений, блокировок, счетчиков и других структур. Благодаря высочайшей производительности Redis стал популярным хранилищем и используется в множестве продуктов, например, вы можете настроить хранение пользовательских сессий в Redis для PHP, что позволить разгрузить файловую систему сервера и автоматически удалять устаревшие объекты.
Настройка Docker
Если у вас уже настроен и установлен Docker, просто пропустите этот шаг. Если Docker не установлен, установите его по одному из руководств: Ubuntu 16.04 и 18.04, Debian 9 и 10, Centos 7 и приступайте к следующему шагу.
Настройка Redis
При установке Redis мы будем использовать внешний конфигурационный файл и внешний каталог хранения данных для того, чтобы при перезапуске контейнера вся информация оставалась в сохранности.
Нам понадобится два каталога — /opt/redis/etc и /opt/redis/data. В первом мы будем хранить настройки для redis.conf, а во втором — базы данных Redis и журналы, если вам требуется сохранять данные между перезапусками Redis. Обычно, если Redis используется для целей СУБД, а не кэша, то сохранение данных требуется.
sudo mkdir -p /opt/redis/ sudo mkdir /opt/redis/data/
Заполним конфигурационный файл /opt/redis/etc/redis.conf содержимым из блока, приведенного ниже:
bind 0.0.0.0 protected-mode yes port 6379 tcp-backlog 511 timeout 0 tcp-keepalive 300 pidfile /var/run/redis/redis-server.pid loglevel notice logfile /data/log/redis-server.log databases 16 always-show-logo yes save 900 1 save 300 10 save 60 10000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump.rdb dir /data/bases slave-serve-stale-data yes slave-read-only yes repl-diskless-sync no repl-diskless-sync-delay 5 repl-disable-tcp-nodelay no slave-priority 100 lazyfree-lazy-eviction no lazyfree-lazy-expire no lazyfree-lazy-server-del no slave-lazy-flush no appendonly yes appendfilename "appendonly.aof" appendfsync everysec no-appendfsync-on-rewrite no auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes aof-use-rdb-preamble no lua-time-limit 5000 slowlog-log-slower-than 10000 slowlog-max-len 128 latency-monitor-threshold 0 notify-keyspace-events "" hash-max-ziplist-entries 512 hash-max-ziplist-value 64 list-max-ziplist-size -2 list-compress-depth 0 set-max-intset-entries 512 zset-max-ziplist-entries 128 zset-max-ziplist-value 64 hll-sparse-max-bytes 3000 activerehashing yes client-output-buffer-limit normal 0 0 0 client-output-buffer-limit slave 256mb 64mb 60 client-output-buffer-limit pubsub 32mb 8mb 60 hz 10 aof-rewrite-incremental-fsync yes
Записи журнала Redis будут находиться в файле /opt/redis/logs/redis-server.log, а базы данных Redis в каталоге /opt/redis/data/bases.
Преимущества выполненных настроек Redis:
- все базы данных Redis будут сохраняться между перезагрузками контейнера;
- журналы redis будут находиться в файле, а не в syslog или в стандартном выводе контейнера;
- конфигурационный файл, использованный в настройке находится во внешнем файле и может быть изменен по необходимости.
sudo docker run --restart=always -d --name redis_1 \ -v /opt/redis/etc/redis.conf:/usr/local/etc/redis/redis.conf \ -v /opt/redis/data:/data \ -p 127.0.0.1:6379:6379 redis redis-server \ /usr/local/etc/redis/redis.conf
Для проверки того, что контейнер нормально запустился запустите команду
sudo docker ps
В результате, вы должны увидеть вывод, похожий на следующий:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES afcd2f031d62 redis "docker-entrypoint.s…" 14 minutes ago Up 14 minutes 127.0.0.1:6379->6379/tcp redis_1
На этом базовое продуктовое развертывание Redis можно считать законченной. Следующим шагом мы рекомендуем выполнить настройки безопасности, приведенные в нашей статье.
3 простых шага для запуска Redis Docker в CentOS или Linux

Давайте обсудим самый простой способ настройки сервера Redis Docker с помощью контейнера Docker.
Если вы планируете установить службу Redis, это дает мне указание на то, что вы уже знаете об этом и каковы варианты его использования.
Я не уверен насчет вас, ребята, но я действительно большой поклонник Docker. Это делает вещи быстрее и проще. Мы собираемся установить образ сервера Redis с помощью контейнера докеров. Это намного проще и удобнее, чем устанавливать его в Windows или Linux.
Нам нужно несколько предварительных условий для настройки образа Redis Docker.
- Зарегистрированная учетная запись в Docker Hub.
- Docker Engine работает на любой из ОС(Linux, Windows, Mac).
- Учетные данные, уже настроенные с помощью Docker Engine для загрузки образа из концентратора Docker.
Установите контейнер Docker как разовое действие
Следующая ссылка поможет вам настроить докер на вашем компьютере.
Подключиться к хост-компьютеру
У меня есть док-контейнер, работающий на моей виртуальной машине CentOs 7. Итак, давайте начнем с доступа к виртуальной машине с помощью клиента ssh.

После подключения к Linux-машине. Я уже установил движок докера на свою машину.
Поиск образа Redis Docker в Docker Hub
Если вы не уверены в образе сервера Redis, не проблема. Просто откройте концентратор Docker и найдите образ, который хотите установить.

Вы также должны увидеть похожий результат поиска. Просто нажмите на первый результат. Он перенаправит вас на подробную страницу Redis.

Как вы можете видеть на подробной странице. уже указана команда, которую можно использовать для установки сервера Redis.
Извлеките образ Redis Docker, выполнив команду
docker run —name myredis -d redis

Как только вы закончите установку. Выполните команду docker ps, чтобы увидеть работающий экземпляр Redis.

Как мы видим, наш образ контейнера Redis запущен и работает. Итак, давайте попробуем подключиться к серверу Redis с помощью нашего инструмента Redis-CLI.
Инструмент Redis-Cli в Docker
Как мы видели в предыдущих руководствах по установке, Redis-CLI можно запустить непосредственно на компьютере, на котором работает сервер Redis. Но в данном случае все немного иначе.
sudo docker exec -it myredis redis-cli ping
если выполненная команда выполнена успешно, вы увидите ответное сообщение «PONG» от сервера Redis.

Вот и все! Вы закончили установку сервера Redis в док-контейнере. Вы можете начать использовать сервер Redis, используя различные языки, такие как C#, Python и Node Js.