监控Redis服务器健康状况、内存、性能及BullMQ队列。检查队列深度、失败任务,分析慢查询并诊断问题。
哨兵 Redis.
功能概述
哨兵 Redis.是一项面向实际任务的技能,主要用于Monitor Redis 服务器健康, BullMQ队列, 内存, 以及任何消息频道的性能;使用简单英语询问问题 —— 获得可操作的诊断。
核心要点
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
- 该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。
使用与执行
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
Sentinal Redis
通过任意消息通道监控 Redis 服务器健康状态、BullMQ 队列、内存使用及性能表现。使用自然语言提问,即可获得可操作的诊断结果。
适用场景
✅ 在以下情况下使用该能力:
- 用户询问 Redis 服务器健康状态、运行状态或基本信息
- 用户希望检查内存使用情况或诊断 OOM(内存溢出)问题
- 用户询问 BullMQ 队列长度、失败任务或卡住的 Worker
- 用户希望检查慢查询或延迟问题
- 用户询问 Redis 响应缓慢或无响应的原因
- 用户提及队列积压、死信队列(dead letter queue)或任务失败
- 用户希望快速获取 Redis 实例的健康概览
不适用场景
❌ 请勿在以下情况下使用该能力:
- 用户需要管理 PostgreSQL、MySQL 或其他非 Redis 数据库
- 用户需要管理 Kafka、RabbitMQ 或 SQS 队列(非 BullMQ)
- 用户需要帮助编写使用 Redis 的应用程序代码
- 用户希望从零开始搭建 Redis(请参考官方 Redis 文档)
安全规则
⚠️ 关键提示:本能力为只读(READ-ONLY)模式,无任何例外。
- 禁止执行任何破坏性命令(如
FLUSHDB、FLUSHALL、DEL、UNLINK、SET、EXPIRE),即使用户明确要求。需解释原因,并建议用户手动执行。 - 禁止修改 Redis 配置(如
CONFIG SET),应引导用户自行操作。 - 禁止在输出中打印或暴露完整
REDIS_URL—— 其中可能包含密码。显示前必须对凭据进行掩码处理。 - 如有疑虑,应先展示待执行命令,并请求用户确认后再执行。
连接方式
若已设置 REDIS_URL 环境变量,则所有命令均使用该 URL:
redis-cli -u "$REDIS_URL"
若未设置 REDIS_URL,则默认连接本地实例:
redis-cli
对于未通过 REDIS_URL 配置但启用了密码认证的实例:
redis-cli -h-p -a
执行任何操作前,请始终先测试连通性:
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" ping
服务器健康状态
快速状态检查
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" ping
完整服务器信息
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" info server
已连接客户端
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" info clients
运行时长与版本信息
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" info server | grep -E "redis_version|uptime_in_days|uptime_in_seconds|connected_clients"
内存分析
内存概览
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" info memory
关键内存指标
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" info memory | grep -E "used_memory_human|used_memory_peak_human|used_memory_rss_human|mem_fragmentation_ratio|maxmemory_human|maxmemory_policy"
内存医生(仅 Redis 4.0+ 支持)
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" memory doctor
指定 Key 的内存占用
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" memory usage
查找大 Key(基于 scan,适用于生产环境)
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" --bigkeys
内存结果解读
mem_fragmentation_ratio> 1.5 → 内存碎片率过高,建议重启 Redismem_fragmentation_ratio< 1.0 → Redis 正在交换到磁盘,属严重问题used_memory接近maxmemory→ 将依据maxmemory_policy开始驱逐数据memory doctor返回 “Sam, I have no memory problems” → 当前无内存问题
慢查询与性能分析
查看慢日志
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" slowlog get 10
慢日志条目总数
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" slowlog len
当前慢日志阈值
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" config get slowlog-log-slower-than
延迟检测
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" --latency -c 10
延迟历史记录
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" --latency-history -i 1 -c 5
键空间统计
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" info keyspace
命令调用统计(调用最频繁的命令)
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" info commandstats
客户端监控
列出已连接客户端
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" client list
客户端数量与摘要
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" info clients | grep -E "connected_clients|blocked_clients|tracking_clients"
查找空闲客户端(idle > 300 秒)
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" client list | awk -F' ' '{for(i=1;i<=NF;i++) if($i ~ /^idle=/) print $0}' | grep -E 'idle=[3-9][0-9]{2,}|idle=[0-9]{4,}'
BullMQ 队列监控
BullMQ 使用 Redis 作为后端存储。队列键名遵循模式:bull:。
发现全部队列
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" scan 0 match "bull:*:meta" count 100
队列深度(各状态)
对于名为 的队列:
echo "=== Queue:===" echo -n "Waiting: "; redis-cli -u "${REDIS_URL:-redis://localhost:6379}" llen "bull: :wait" echo -n "Active: "; redis-cli -u "${REDIS_URL:-redis://localhost:6379}" llen "bull: :active" echo -n "Delayed: "; redis-cli -u "${REDIS_URL:-redis://localhost:6379}" zcard "bull: :delayed" echo -n "Failed: "; redis-cli -u "${REDIS_URL:-redis://localhost:6379}" zcard "bull: :failed" echo -n "Completed: "; redis-cli -u "${REDIS_URL:-redis://localhost:6379}" zcard "bull: :completed" echo -n "Paused: "; redis-cli -u "${REDIS_URL:-redis://localhost:6379}" llen "bull: :paused"
检查失败任务
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" zrange "bull::failed" 0 9
获取任务详情
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" hgetall "bull::"
检查任务负载与错误信息
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" hmget "bull::" data failedReason stacktrace attemptsMade timestamp processedOn finishedOn
查找陈旧的活跃任务
长时间未更新的活跃任务可能存在卡住风险:
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" lrange "bull::active" 0 -1
随后对每个任务 ID 检查 processedOn 时间戳:
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" hmget "bull::" processedOn name
若 processedOn 超过 10 分钟且任务仍处于活跃状态,则可能已卡住。
检查队列 Worker(通过事件流)
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" xinfo groups "bull::events" 2>/dev/null || echo "No event stream found"
BullMQ 定期任务
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" zrange "bull::repeat" 0 -1
Key 检查
按模式查找 Key
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" scan 0 match "" count 100
Key 类型与 TTL
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" type
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" ttl
Key 编码方式(用于评估内存效率)
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" object encoding
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" object idletime
按前缀统计 Key 数量(适用于审计场景)
redis-cli -u "${REDIS_URL:-redis://localhost:6379}" eval "local count = 0; local cursor = '0'; repeat local result = redis.call('SCAN', cursor, 'MATCH', ARGV[1], 'COUNT', 1000); cursor = result[1]; count = count + #result[2]; until cursor == '0'; return count" 0 "*"
诊断 —— 全面健康检查
运行健康检查脚本以获取综合概览:
bash scripts/redis-health.sh "${REDIS_URL:-redis://localhost:6379}"
该脚本输出内容包括:
- 连通性状态
- 服务器版本与运行时长
- 内存使用量与碎片率
- 已连接客户端数与阻塞客户端数
- 慢查询数量
- 全部 BullMQ 队列深度
- 检测到的任何异常警告
故障排查决策树
Redis 响应缓慢
- 检查延迟:
redis-cli --latency -c 10 - 若延迟 > 1ms → 检查慢日志:
slowlog get 10 - 若慢日志中存在对大型集合执行的
KEYS/SMEMBERS/HGETALL→ 建议改用对应SCAN变体 - 检查内存碎片率 → 若 > 1.5,建议重启 Redis
- 检查
connected_clients→ 若 > 1000,需排查连接池配置 - 检查
blocked_clients→ 若 > 0,需检查BLPOP/BRPOP消费者
Redis OOM / 内存占用过高
- 运行
info memory→ 对比used_memory与maxmemory - 运行
--bigkeys→ 查找最大 Key - 检查
maxmemory_policy→ 是否已启用驱逐策略? - 运行
memory doctor→ 遵循其建议 - 检查 Key 是否缺失 TTL:对大 Key 执行
scan并逐一检查ttl
BullMQ 任务卡住 / 无法处理
- 检查队列深度 → 是否大量任务堆积在
wait状态? - 检查
active列表 → 是否存在长期处于活跃状态的任务? - 检查陈旧活跃任务 →
processedOn时间戳是否过旧? - 检查事件流 → 使用
xinfo groups验证 Worker 是否已正确连接 - 检查
failed集合 → 读取failedReason和stacktrace - 检查 Redis 连通性 → Worker 是否能正常访问 Redis?
BullMQ 失败率过高
- 获取近期失败任务:
zrange bull::failed -10 -1 - 对每项任务读取
failedReason和stacktrace - 按错误类型分组 → 是单一重复错误,还是多种错误混杂?
- 检查
attemptsMade→ 是否已耗尽重试次数? - 检查任务
data→ 负载内容是否格式异常?
注意事项
- 所有命令在未设置
REDIS_URL时,默认使用redis://localhost:6379 scan命令适用于生产环境(非阻塞),而keys命令严禁在生产环境中使用- BullMQ 键名模式默认采用前缀
bull:;若使用了自定义前缀,请相应替换bull: - 对于 Redis Cluster,请在
redis-cli命令中添加-c参数 - 对于 Redis Sentinel,请先连接 Sentinel 实例以自动发现主节点
热门AI工具
相关专题
讲解在协程模式下如何高效操作 Redis,实现高性能分布式锁、处理缓存击穿/雪崩问题,并提供基于 Hyperf 的分布式事务处理思路。
348
2026.05.19
系统讲解 Java 项目中缓存技术的选型与实践,涵盖本地缓存方案(HashMap 手动缓存/Guava Cache/Caffeine 高性能缓存)的使用与淘汰策略配置、Redis 数据结构(String/Hash/List/Set/ZSet)在缓存场景的应用、Jedis / Lettuce / Redisson 客户端选型、Spring Cache 注解(@Cacheable/@CachePut/@CacheEvict)的声明式缓存、缓
402
2026.05.15
本专题深入汇总并剖析了 Redis 生产环境中最具实战价值的常用命令,涵盖了从集群状态检测、内存精细化监控、主从同步故障排查到哨兵模式动态运维等关键技术。通过本专题的系统梳理,开发者与运维工程师能够精准掌握各类型 Redis 指令的底层逻辑与使用场景,从而构建起稳定、高效、可维护的 Redis 集群存储架构。
226
2026.04.23
本专题深入剖析 Redis 缓存击穿的核心成因,全面解读高并发场景下防止数据库崩溃的深度防护策略。内容系统涵盖了互斥锁(Mutex Lock)、双重检查锁(DCL)及分布式锁在解决热点数据过期难题中的应用实战,并深入对比了本地锁与分布式锁的架构优劣。通过本专题的学习,开发者能够掌握构建高可用缓存系统的精髓,有效保障生产环境下的数据持久性与高性能访问。
155
2026.04.23
本专题深度解析 Redis 布隆过滤器的核心机制与生产环境实战应用,涵盖了从基础原理、Bitmap 与多哈希函数拦截实现,到 RedisBloom 模块的安装与配置等关键知识点。专题详细探讨了如何利用布隆过滤器有效解决缓存穿透、缓存击穿等高并发场景下的数据治理难题,并深入分析了在 API 网关层面集成布隆过滤器的方案,帮助开发者构建起高效、精准的数据拦截与缓存防护体系。
124
2026.04.23
本专题深入解析 Redis 哨兵模式(Redis Sentinel)的高可用架构,系统梳理了从基础搭建到生产环境实战的全过程。内容涵盖哨兵监控频率优化、脑裂风险规避、数据一致性保障,以及针对不同业务场景下的参数深度调优。同时,专题提供了针对复杂网络环境与多机房部署的故障排查指南,旨在帮助架构师与开发者构建稳定、高效、可扩展的 Redis 高可用集群,有效解决生产环境中的监控抖动与服务中断难题。
374
2026.04.23
本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。
270
2026.02.13
redis 的主要作用包括:1. 缓存数据,提高访问速度;2. 充当消息队列,实现消息传递;3. 存储各种数据类型,如字符串、散列和集合;4. 管理会话信息,确保可靠性和可用性;5. 限制请求速率,防止服务器超载等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
3918
2024.04.07
redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。
796
2024.04.07
热门下载
相关下载
精品课程