首页/数据/数据库速查/SELECT / MOVE / SWAPDB 多库操作
Redis 命令96 条

SELECT / MOVE / SWAPDB 多库操作

Redis 默认 16 个逻辑库:SELECT 切换库(集群模式只有 DB 0);MOVE 把键移到另一库;SWAPDB 原子交换两库(FLUSHALL 之外的重置手段)。

数据库速查数据更新于 2026-10-13

多逻辑库的使用与边界

Redis 默认提供 16 个逻辑库,通过 SELECT 切换连接当前操作的目标库;MOVE 把单个键从一个库搬到另一个库,SWAPDB 原子交换两个库的全部内容。多库只是同一实例内的逻辑分区:它们共享内存、CPU 与持久化文件,因此不能用来做资源隔离,也不能在集群模式下使用。

基本信息

适用平台Redis 单机与主从模式;Cluster 模式只有 DB 0
默认库数量16(可用 databases 参数调整)
切换命令SELECT index
搬键命令MOVE key db
整体交换SWAPDB index1 index2

典型使用场景

  • 本地开发时用不同编号的库存放不同环境的测试数据
  • 临时隔离:把有问题的键挪到另一个库便于排查
  • 发布切换:用 SWAPDB 原子把新数据换到生效库
  • 命令行操作时指定库:redis-cli -n 3 直接进入目标库
  • 清理维护:分别查看各库的键数量与内存占用

常用操作

常用操作
SELECT 1                    # 切换当前连接的目标库
SET k v
MOVE k 2                    # 返回 1 表示把 k 移到 2 号库
SELECT 2
GET k                       # 返回 v
SWAPDB 0 1                  # 原子交换 0 号与 1 号库的内容
# 命令行直接指定库
redis-cli -n 3 DBSIZE
# 查看各库键数量
redis-cli INFO keyspace

命令对照

命令作用限制
SELECT index切换连接的默认库Cluster 模式不支持
MOVE key db把键移到目标库目标库已存在同名键时失败
SWAPDB a b原子交换两个库集群模式不支持
INFO keyspace查看各库键数量与过期键数不含内存明细
DBSIZE当前库的键数量作用于当前选中的库
多库不等于多实例:同一实例内所有库共享内存上限与主线程,某个库里的慢命令同样会影响其他库的请求。真正需要隔离时应拆分实例或使用集群。
用多个库做多租户隔离但共享 maxmemory:一个租户的流量可以把内存吃到上限,触发全局淘汰把其他租户的数据一起挤掉。
SWAPDB 常被用来做「原子发布」:新数据先写进备用库,准备好后一次交换,生效过程没有中间态。但它只交换内容,不改变客户端连接当前的库编号,应用侧的键前缀与监控口径都要跟着调整。

易错点

  • 在 Cluster 模式使用 SELECT 或 MOVE:命令直接报错,集群只支持 DB 0
  • 把多库当资源隔离手段:共享内存与 CPU,一个库的异常会波及其他库
  • MOVE 前不检查目标库是否已有同名键:键已存在时移动失败且不报错提示细节
  • 生产环境长期使用非 0 号库:备份、迁移与监控工具默认只关注 DB 0,运维容易遗漏数据

数据来源与参考

  • Redis 官方文档: SELECT
  • Redis 官方文档: MOVE
  • Redis 官方文档: SWAPDB

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌