保护关键连接
maxmemory-clients 用来限制客户端连接占用的内存总量,超出时会按策略驱逐客户端连接;CLIENT NO-EVICT on 把当前连接标记为不可被这类驱逐影响。监控、运维与编排健康检查连接适合开启,避免在客户端内存压力下被断掉,形成监控盲区或操作中断。标记只作用于当前连接,重连后需要重新设置。
基本信息
| 命令 | CLIENT NO-EVICT on|off |
|---|---|
| 背景机制 | 配合 maxmemory-clients 的客户端内存驱逐 |
| 作用范围 | 仅当前连接,重连后失效 |
| 适用连接 | 监控、运维、编排健康检查 |
| 确认方式 | CLIENT INFO 查看当前连接的属性 |
典型使用场景
- 监控连接:保证实例在客户端内存压力下仍能被观测
- 运维通道:执行处置动作的连接不被驱逐,操作不会中断
- 健康检查:编排探针连接持续可用,避免误判实例状态
- 应急排查:故障现场先保住管理连接,再处理业务连接
- 容量评估:确认哪些连接真的需要保护,其余按默认策略
用法与确认
用法与确认
redis-cli CLIENT NO-EVICT on # 标记当前连接不可被驱逐
redis-cli CLIENT INFO # 确认标记是否生效
redis-cli CONFIG GET maxmemory-clients # 查看客户端内存上限配置
redis-cli CLIENT LIST | head -5 # 结合连接列表判断影响面
redis-cli INFO clients | grep connected_clients # 连接数变化是否异常标记与机制
| 要点 | 说明 | 注意 |
|---|---|---|
| 标记粒度 | 按连接设置 | 新连接默认不豁免 |
| 生效前提 | 服务端需支持该命令 | 旧版本会直接报错 |
| 与业务连接的关系 | 业务连接一般不豁免 | 滥用会让驱逐机制失去兜底作用 |
| 确认方式 | CLIENT INFO 查看连接属性 | 确认标记是否真的生效 |
只保护真正需要的连接:大量连接都设为免驱逐时,客户端内存压力来临就没有可回收对象,保护功能等于失效。
旧版本不支持该命令会直接报错,混部环境先核对服务端版本再写进运维脚本,否则脚本会在部分实例上静默失败。