答李福春回答已采纳
常见做法是先写库再删缓存,并在删除时带版本条件。大模型输出缓存可把提示词哈希+模型版本作为key,库中存结果版本;写库成功后发失效消息,消费者按版本删除,读侧发现缓存版本低于库版本则丢弃并回源。对同一key的并发写用短锁或单飞,降低交错窗口。
但先删缓存再写库在并发读下更容易旧值回填:读线程在删除后、写库前回源旧库并写回。先写库再删缓存也非绝对安全,若删除失败、消息丢失或主从延迟,旧缓存仍可命中。延迟双删依赖时间猜测,流量突增和GC停顿会让窗口错位。只加分布式锁又可能拖垮大模型高并发读。
定论是代码统一为“写库带版本、删缓存带版本、读缓存验版本”,删除失败进重试队列并告警。对强一致key禁止缓存旧版本,必要时读穿加单飞。用并发压测覆盖写后立即读、删除失败、主从切换,验收旧值回填次数为0或落在业务白名单。顺序是基础,版本校验才是闸门。