SWAPDB:互换数据库

SWAPDB 命令接受两个数据库号码作为输入,然后对指定的两个数据库实行互换,最后返回 OK 作为结果:

  1. SWAPDB x y

SWAPDB 命令执行完毕之后,原本储存在数据库 x 中的键值对将出现在数据库 y 中,而原本储存在数据库 y 中的键值对将出现在数据库 x 中。

举个例子,对于以下这个包含键 k1k2k3 的 0 号数据库:

  1. db0> KEYS *
  2. 1) "k3"
  3. 2) "k2"
  4. 3) "k1"

以及以下这个包含键 k4k5k6 的 1 号数据库来说:

  1. db1> KEYS *
  2. 1) "k5"
  3. 2) "k4"
  4. 3) "k6"

如果我们执行以下命令,对 0 号数据库和 1 号数据库实行互换:

  1. db0> SWAPDB 0 1
  2. OK

那么在此之后,原本储存在 0 号数据库中的键 k1k2k3 将出现在 1 号数据库中:

  1. db1> KEYS *
  2. 1) "k3"
  3. 2) "k2"
  4. 3) "k1"

而原本储存在 1 号数据库中的键 k4k5k6 将出现在 0 号数据库中:

  1. db0> KEYS *
  2. 1) "k5"
  3. 2) "k4"
  4. 3) "k6"

注解

因为互换数据库这一操作可以通过调整指向数据库的指针来实现,这个过程不需要移动数据库中的任何键值对,所以 SWAPDB 命令的复杂度是 O(1) 而不是 O(N) ,并且执行这个命令也不会导致服务器阻塞。

其他信息

属性
复杂度O(1)
版本要求SWAPDB 命令从 Redis 4.0 版本开始可用。