数据Redis 达到配置内存上限时,写入是否继续取决于内存淘汰策略和候选键情况。产品缓存通常可从数据库重建,淘汰会增加后端读取但不应破坏业务事实;队列消息、尚未完成的任务状态或关键计数可能无法重建,淘汰会成为数据丢失。第一步应盘点键空间并标注权威数据源、允许丢失程度、重建成本、TTL 和消费者行为,而不是先选一个看起来合适的策略。
同一实例混合可重建缓存和重要工作数据时,即便设置了“只淘汰缓存键”的习惯约定,策略本身也未必理解业务类别。除非通过独立实例、独立资源池或明确的数据结构与TTL边界隔离,否则普通的键淘汰机制无法可靠保证关键键永远保留。淘汰策略不是业务数据重要性的识别器。
达到上限时,有些策略从所有键中按近似近期使用情况或访问频率选择候选项;有些只考虑带过期时间的键;还有策略会拒绝新的内存分配。近似 LRU/LFU 不是精确排序,也不能证明被挑中的键已无业务价值。带 TTL 的候选策略在没有合格过期键时,新增写入可能失败,因此必须测试这种边界。具体策略名称和行为应以所运行版本的配置文档及实际环境为准。
若选择拒绝写入,调用方必须检查并处理内存不足错误;忽略返回值会形成“请求成功但数据未保存”的隐蔽故障。若采用淘汰,则缓存未命中会转移负载到后端,可能出现连锁效应:大量键被移除、数据库压力上升、缓存重建又占用内存与 CPU。策略选择要连同重建容量一起验证。
同时观察已用内存、配置上限、碎片率、淘汰数、过期数、写入失败数、命中率、键数量与值大小分布。淘汰计数持续增长说明容量或键生命周期需要分析;过期数升高可能只是TTL集中到期;命中率下降可能来自工作集扩大或热点变化。记录一段稳定基线,再对比业务峰值与大对象写入时的变化。还应考虑复制缓冲、持久化过程和客户端输出缓冲等额外内存用途,不能把实例剩余内存全部当作键空间预算。
不能只验收“Redis 没有宕机”。还要证明内存接近上限时,可重建缓存按预期淘汰或写入被明确拒绝,重要队列不会被误当缓存清除,调用方能处理错误,后端不会被未命中风暴压垮。观察到淘汰数为零也可能只是负载尚未触及上限,不代表未来没有风险。将容量增长、淘汰、写入失败和队列积压设为联动告警,并按数据用途隔离,是内存策略真正可控的条件。