讲师中心 微信公众号
AI工具推荐 视频效率加速

Sentinal Redis

Polar Sponsor
爱发电 赞助
.NET 9.0

监控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 → 内存碎片率过高,建议重启 Redis
  • mem_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 响应缓慢

  1. 检查延迟:redis-cli --latency -c 10
  2. 若延迟 > 1ms → 检查慢日志:slowlog get 10
  3. 若慢日志中存在对大型集合执行的 KEYS/SMEMBERS/HGETALL → 建议改用对应 SCAN 变体
  4. 检查内存碎片率 → 若 > 1.5,建议重启 Redis
  5. 检查 connected_clients → 若 > 1000,需排查连接池配置
  6. 检查 blocked_clients → 若 > 0,需检查 BLPOP/BRPOP 消费者

Redis OOM / 内存占用过高

  1. 运行 info memory → 对比 used_memory 与 maxmemory
  2. 运行 --bigkeys → 查找最大 Key
  3. 检查 maxmemory_policy → 是否已启用驱逐策略?
  4. 运行 memory doctor → 遵循其建议
  5. 检查 Key 是否缺失 TTL:对大 Key 执行 scan 并逐一检查 ttl

BullMQ 任务卡住 / 无法处理

  1. 检查队列深度 → 是否大量任务堆积在 wait 状态?
  2. 检查 active 列表 → 是否存在长期处于活跃状态的任务?
  3. 检查陈旧活跃任务 → processedOn 时间戳是否过旧?
  4. 检查事件流 → 使用 xinfo groups 验证 Worker 是否已正确连接
  5. 检查 failed 集合 → 读取 failedReason 和 stacktrace
  6. 检查 Redis 连通性 → Worker 是否能正常访问 Redis?

BullMQ 失败率过高

  1. 获取近期失败任务:zrange bull::failed -10 -1
  2. 对每项任务读取 failedReason 和 stacktrace
  3. 按错误类型分组 → 是单一重复错误,还是多种错误混杂?
  4. 检查 attemptsMade → 是否已耗尽重试次数?
  5. 检查任务 data → 负载内容是否格式异常?

注意事项

  • 所有命令在未设置 REDIS_URL 时,默认使用 redis://localhost:6379
  • scan 命令适用于生产环境(非阻塞),而 keys 命令严禁在生产环境中使用
  • BullMQ 键名模式默认采用前缀 bull:;若使用了自定义前缀,请相应替换 bull:
  • 对于 Redis Cluster,请在 redis-cli 命令中添加 -c 参数
  • 对于 Redis Sentinel,请先连接 Sentinel 实例以自动发现主节点
目录

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

相关专题

更多
Hyperf 高并发缓存与分布式系统应用
Hyperf 高并发缓存与分布式系统应用

讲解在协程模式下如何高效操作 Redis,实现高性能分布式锁、处理缓存击穿/雪崩问题,并提供基于 Hyperf 的分布式事务处理思路。

348

2026.05.19

Java缓存技术与Redis集成教程合集
Java缓存技术与Redis集成教程合集

系统讲解 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 生产环境中最具实战价值的常用命令,涵盖了从集群状态检测、内存精细化监控、主从同步故障排查到哨兵模式动态运维等关键技术。通过本专题的系统梳理,开发者与运维工程师能够精准掌握各类型 Redis 指令的底层逻辑与使用场景,从而构建起稳定、高效、可维护的 Redis 集群存储架构。

226

2026.04.23

Redis缓存击穿深度解析与解决方法
Redis缓存击穿深度解析与解决方法

本专题深入剖析 Redis 缓存击穿的核心成因,全面解读高并发场景下防止数据库崩溃的深度防护策略。内容系统涵盖了互斥锁(Mutex Lock)、双重检查锁(DCL)及分布式锁在解决热点数据过期难题中的应用实战,并深入对比了本地锁与分布式锁的架构优劣。通过本专题的学习,开发者能够掌握构建高可用缓存系统的精髓,有效保障生产环境下的数据持久性与高性能访问。

155

2026.04.23

Redis布隆过滤器使用教程
Redis布隆过滤器使用教程

本专题深度解析 Redis 布隆过滤器的核心机制与生产环境实战应用,涵盖了从基础原理、Bitmap 与多哈希函数拦截实现,到 RedisBloom 模块的安装与配置等关键知识点。专题详细探讨了如何利用布隆过滤器有效解决缓存穿透、缓存击穿等高并发场景下的数据治理难题,并深入分析了在 API 网关层面集成布隆过滤器的方案,帮助开发者构建起高效、精准的数据拦截与缓存防护体系。

124

2026.04.23

Redis哨兵模式常见问题与配置详解
Redis哨兵模式常见问题与配置详解

本专题深入解析 Redis 哨兵模式(Redis Sentinel)的高可用架构,系统梳理了从基础搭建到生产环境实战的全过程。内容涵盖哨兵监控频率优化、脑裂风险规避、数据一致性保障,以及针对不同业务场景下的参数深度调优。同时,专题提供了针对复杂网络环境与多机房部署的故障排查指南,旨在帮助架构师与开发者构建稳定、高效、可扩展的 Redis 高可用集群,有效解决生产环境中的监控抖动与服务中断难题。

374

2026.04.23

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

270

2026.02.13

redis主要作用有哪些
redis主要作用有哪些

redis 的主要作用包括:1. 缓存数据,提高访问速度;2. 充当消息队列,实现消息传递;3. 存储各种数据类型,如字符串、散列和集合;4. 管理会话信息,确保可靠性和可用性;5. 限制请求速率,防止服务器超载等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3918

2024.04.07

redis的8种数据类型有哪些
redis的8种数据类型有哪些

redis 提供 8 种数据类型:字符串(文本、数字、二进制)、哈希(键值对)、列表(有序集合)、集合(无序唯一元素)、有序集合(按分数排序)、地理空间(地理位置)、hyperloglog(估计大数据基数)和位图(位序列存储)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

796

2024.04.07

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn