首页/数据/Redis 进阶速查/CLIENT NO-EVICT 保护关键连接
性能与排障129 条

CLIENT NO-EVICT 保护关键连接

CLIENT NO-EVICT on 把当前连接标记为不可被客户端内存驱逐,监控与运维连接可用它保命。

Redis 进阶速查数据更新于 2026-10-13

保护关键连接

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 查看连接属性确认标记是否真的生效
只保护真正需要的连接:大量连接都设为免驱逐时,客户端内存压力来临就没有可回收对象,保护功能等于失效。
旧版本不支持该命令会直接报错,混部环境先核对服务端版本再写进运维脚本,否则脚本会在部分实例上静默失败。

易错点

  • 把业务连接也设为免驱逐:客户端内存失控时没有可回收连接,实例先出问题
  • 旧版本没有该能力:运维脚本在部分实例上报错或静默失败,混部环境要先核对版本
  • 设置后不确认生效:CLIENT INFO 是低成本的确认手段,跳过等于假设成功
  • 重连后忘记重置:标记只作用于当前连接,连接重建后保护自动消失

数据来源与参考

  • Redis 官方文档:CLIENT NO-EVICT
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌