Thank you for reading this post, don't forget to subscribe!
Redis — система хранения и обработки данных, написанная на C, которую можно использовать как базу данных, сервис кеширования и менеджер очередей.
Обслуживаемые им данные хранятся в памяти (in-memory dataset), периодически синхронизируясь с данными на жестком диске, в зависимости от конфигурации Redis
Установка Redis
Redis можно установить с помощью менеджера пакетов ОС, из исходников, либо запустить из Docker образа.
Docker
docker run --name redis-server redis
Source code
Либо можно скачать исходники с последней версией, и собрать Redis самому.
Качаем:
wget http://download.redis.io/redis-stable.tar.gz
tar xfp redis-stable.tar.gz
Устанавливаем tcl
:
pacman -S tcl
Собираем
После сборки и проверки — можно вызвать make install
и начинать пользоваться Redis и утилитами:
redis-server
: сам серверredis-sentinel
: мониторинг, failover и другое,redis-cli
: CLI для работы с Redisredis-benchmark
: проверка производительностиredis-check-aof
иredis-check-dump
: утилиты для работы с повреждёнными файлами данных
Запуск сервера
При вызове redis-server
без аргументов — он будет запущен с файлом настроек по умолчанию — /etc/redis.conf
:
Можно передать свой файл настроек первым аргументом:
redis-server /etc/my-redis.conf
Проверяем с помощью ping
через CLI:
Сохранение данных
Документация — https://redis.io/topics/persistence
При запуске с настройками по умолчанию — Redis выполняет «снимок» данных:
Тут SAVE
(BGSAVE
на самом деле — SAVE
будет вызван только если предыдущий BGSAVE
завершился с ошибкой) выполняется каждые 900 секунд, если минимум 1 ключ был изменён, либо каждые 300 секунд при изменении 10 ключей, или раз в 60, если были изменены значения 10000 ключей.
SAVE
сохраняет снимок данных из памяти на диск (механизм RDB) в файл dump.rdb
:
Данные можно сдампить вручную, используя команды CLI save
или bgsave
.
Добавим ключ:значение:
1 2 |
7736:M 28 May 13:49:11.787 * Background saving started by pid 28520 28520:C 28 May 13:49:11.795 * DB saved on disk |
Находим файл — каталог /var/lib/redis/
, как указано в параметре dir
файла настроек:
(при вызове shutdown
— Redis тоже сохранит данные).
Запуск из файла RDB
Для проверки — переносим файл снимка:
cp /var/lib/redis/dump.rdb /tmp/
Запускаем Redis из этого файла:
redis-server --dbfilename dump.rdb --dir /tmp/
Проверяем ключ:
Добавление, получение, удаление данных
Т.к. Redis является key:value хранилищем, то все данные добавляются через указание ключа.
Для добавления данных — используем SET
:
В Redis нет поддержки пространства имён, но возможно использование двоеточия для разделения ключей, что бы избежать проблем с дубликатами, т.к. при выполнении SET firstkey
ещё раз — значение будет просто перезаписано:
Тут можно использовать разделение пространства имён, например:
И аналогично их получить с помощью GET
:
Базы данных Redis
Но, как говорится в посте Storing Data with Redis — использование namespaces плохая идея, и вместо этого лучше использовать базы данных Redis (которые, однако, не поддерживаются в случае использования кластера).
По умолчанию Redis поддерживает 16 БД:
Для переключения между ними — используем SELECT
:
И получаем список всех ключей — обратите внимание на [1]
— номер базы:
Возвращаемся к старой базе:
Так же ключи можно перемещать между базами с помощью MOVE
: