Управление базами в Redis
Экземпляр Redis из коробки поддерживает 16
логических баз данных. Эти базы данных фактически отделены друг от друга – то есть, когда вы запускаете команду в одной базе данных, это не влияет на данные, хранящиеся в других базах этого экземпляра Redis.
Базы данных Redis пронумерованы от 0
до 15
. По умолчанию при подключении к экземпляру Redis вы попадаете в базу данных 0
. Конечно, вы можете изменить базу данных, это делается после подключения с помощью команды select
:
127.0.0.1:6379> select 15
Если вы выбрали другую базу данных вместо 0, она будет отражена в префиксе строки redis-cli в квадратных скобках:
127.0.0.1:6379[15]˃
Чтобы заменить все данные, хранящиеся в одной базе данных, на данные хранящиеся в другой, используйте команду swapdb
. В следующем примере данные, хранящиеся в БД 6, будут заменены данными из БД 8 и все клиенты, подключенные к любой из этих баз, смогут сразу же увидеть изменения, swapdb
вернет OK
, если замена прошла успешно:
127.0.0.1:6379> swapdb 6 8
OK
Если вы хотите переместить ключ в другой экземпляр Redis, вы можете запустить команду migrate
. Эта команда проверяет ключ на целевом экземпляре, затем удаляет его с исходного экземпляра. При запуске команда migrate
должна включать следующие элементы в следующем порядке:
- Имя хоста или IP-адрес целевой базы данных
- Номер порта целевой базы данных
- Ключ, который вы хотите перенести
- Номер базы данных, в которой нужно сохранить ключ на целевом экземпляре
- Интервал времени в миллисекундах, который определяет максимальное время простоя между двумя машинами. Обратите внимание: это не ограничение операции по времени (просто операция должна всегда обеспечивать определенный уровень прогресса в течение определенного периода времени)
Пример:
127.0.0.1:6379> migrate 203.0.113.0 6379 key_1 7 8000
Также команда migrate
поддерживает несколько опций, которые можно указать после последнего аргумента:
COPY
указывает, что ключ нужно скопировать и не нужно удалять с исходного экземпляраREPLACE
если ключ уже существует в целевой БД, команда должна заменить его текущим ключомKEYS
вместо конкретного ключа вы можете ввести пустую строку“”
, а затем использовать синтаксис командыkeys
– это позволяет перенести любой ключ, соответствующий шаблону