外观
搜题缓存怎样设计?热点失效、空结果和题目纠错怎么办?
标准回答
先说明缓存了哪一层,以及键包含哪些会改变结果的条件。重复查询能复用结果,但题目纠错、索引更新和权限变化需要明确失效策略;热点同时过期时还应避免所有请求一起压向搜索服务。缓存产品和参数只能按真实实现作答。
通俗例子
一个热门题的缓存到期后,很多相同请求同时到来,如果都直接查询 ES,会产生一波集中回源。可考虑只让一个请求重建,其余受控等待或使用符合策略的旧结果。
深入解释
**键先保证结果语义相同:**规范化查询可以提高命中,但学科、分页或过滤条件若影响结果,也需要纳入键;不能为了命中率把不同查询混为一谈。
**更新要有可接受的旧数据窗口:**TTL、主动失效或版本键各有取舍。题目答案更正后,旧答案最多还能被看到多久,应有明确说明。
**异常流量控制回源:**短时缓存空结果、合并相同回源或错开过期可作为方案;需要区分已落地机制与现在提出的改进。
追问与回答
缓存到底用 Redis 还是本地内存?
简历没写,按实际实现回答,不应默认补成 Redis 集群。
缓存答案还能扣费吗?
是否计费属于产品契约;缓存命中不能绕过鉴权、配额或去重记账。
易混淆点
用了缓存不等于解决了穿透、击穿和一致性所有问题。
进一步举证
- 补齐缓存位置、键、TTL、容量和更新策略。
- 准备空结果、热点失效、纠错以及错误响应的处理。
内容来源
- Android · AI Agent 知识手册 · 原条目
resume-R38