Redis默认提供16个数据库(编号0-15),切换至第10号数据库(索引为9)需使用命令:SELECT 9。跨库操作需注意Redis原生不支持直接跨库查询,但可通过以下技巧实现数据交互:1. 使用MOVE key db将键移至目标库;2. 通过DUMP key与RESTORE key ttl serialized-value组合复制数据;3. 客户端工具(如Redisson)支持跨库事务封装。官方强调跨库操作可能引发性能损耗,建议优先通过应用层逻辑合并数据。
官方文档说明
Redis命令参考明确指出:"SELECT命令用于切换当前连接的数据库索引,跨库数据迁移需依赖MOVE或序列化命令,且事务(MULTI/EXEC)仅作用于单库"。
社区实践方案
开发者常采用Lua脚本原子化执行多库操作,例如:EVAL "redis.call('SELECT',9); return redis.call('GET',KEYS[1])" 1 mykey,但需注意脚本执行期间会阻塞其他命令。
性能优化建议
高频跨库访问时,建议将关联数据集中存储至同一数据库,或使用Redis Cluster分片替代逻辑分库。监控工具显示,频繁SELECT切换可使延迟增加30%-50%。
数据迁移工具
redis-dump等第三方工具支持全库导出/导入,命令示例:redis-dump -d 9 -u redis://host:6379 > db9.json,适用于批量跨库同步场景。
FAQ
Q: Redis默认有多少个数据库?
A: 默认配置为16个(db0-db15),可通过配置文件databases参数修改。
Q: 跨库操作是否支持事务?
A: 不支持。Redis事务仅限单库内命令原子执行,跨库需分步处理。
Q: 如何快速验证当前所在数据库?
A: 执行INFO keyspace查看活跃数据库,或使用CLIENT LIST过滤db字段。