Redis 基础知识问答
1. Redis 是否有多个数据库?
答: 是的,Redis 支持多个数据库。
- Redis 默认提供 16 个数据库,编号从
0到15 - 默认使用
0号数据库 - 可以通过
SELECT命令切换数据库,例如:SELECT 1切换到 1 号数据库 - 可以在配置文件中通过
databases参数修改数据库数量
注意事项:
- 不同数据库之间的数据是隔离的
- 但所有数据库共享同一个 Redis 实例的资源(内存、CPU等)
- 在生产环境中,更推荐使用多个 Redis 实例而不是多个数据库来实现数据隔离
2. KEYS * 查看的是哪个数据库的键?
答: KEYS * 只会查看当前所在数据库的键,不会跨数据库查询。
示例说明:
# 默认在 0 号数据库
127.0.0.1:6379> KEYS * # 只显示 0 号数据库的键
127.0.0.1:6379> SELECT 1 # 切换到 1 号数据库
127.0.0.1:6379[1]> KEYS * # 只显示 1 号数据库的键
如何查看所有数据库的键?
Redis 没有直接命令查看所有数据库,需要手动切换:
# 方法:逐个切换数据库查看
SELECT 0
KEYS *
SELECT 1
KEYS *
SELECT 2
KEYS *
# ... 依此类推
实用技巧:
- 使用
INFO keyspace命令可以查看哪些数据库有数据 - 注意命令提示符的变化:
127.0.0.1:6379[1]>中的[1]表示当前在 1 号数据库
重要提示:
KEYS *在生产环境中慎用,数据量大时会阻塞 Redis- 推荐使用
SCAN命令代替KEYS
3. _kombu.binding.* 这些键是什么?
答: 这些是 Celery 任务队列框架创建的键。
键名解析:
_kombu.binding.celery.pidbox # Celery 的远程控制命令绑定
_kombu.binding.celery # Celery 默认任务队列绑定
_kombu.binding.celeryev # Celery 事件监控绑定
背景知识:
- Celery 是 Python 的分布式任务队列框架,用于异步执行任务
- Kombu 是 Celery 底层使用的消息传递库
- Redis 在这里作为 消息代理(Broker) 使用
- 这些
binding键用于管理消息队列的路由和绑定关系
常见的 Celery 相关键:
_kombu.binding.*- 队列绑定信息celery- 默认任务队列celery-task-meta-*- 任务结果元数据unacked_*- 未确认的任务
如何清理:
# 如果不再使用 Celery,可以删除这些键
DEL _kombu.binding.celery.pidbox
DEL _kombu.binding.celery
DEL _kombu.binding.celeryev
# 或使用通配符(谨慎使用)
# Redis 4.0+ 支持
UNLINK _kombu.binding.*
评论区