Управление базами в 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— это позволяет перенести любой ключ, соответствующий шаблону