MST

星途 面试题库

面试题:缓存设计之缓存与AI模型服务基础交互

在后端开发中,当AI模型服务频繁调用一些相对固定的数据时,如何设计缓存系统来优化性能?请阐述缓存数据的选择策略、更新机制以及可能遇到的缓存穿透问题及解决方案。
45.7万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

缓存数据的选择策略

  1. 热点数据优先:优先缓存经常被调用的数据。可通过分析日志或监控系统,找出一段时间内访问频率高的数据,如电商平台中热门商品的详情信息。
  2. 数据稳定性:对于相对固定不变或很少变化的数据,如网站的配置信息、城市列表等,适合放入缓存。这样可以减少对底层数据源的查询压力。
  3. 数据生成成本:如果获取数据的计算成本高,如复杂的聚合计算结果、AI模型训练的中间结果等,应考虑缓存。

更新机制

  1. 定时更新:设定固定的时间间隔,主动更新缓存中的数据。适用于数据更新频率相对稳定且可预测的场景,比如每天凌晨更新前一天的统计数据缓存。
  2. 基于事件驱动:当数据源中的数据发生变化时,触发缓存更新操作。例如在数据库中商品信息发生修改后,立即更新对应的商品缓存。
  3. 懒加载更新:当缓存数据过期或者被访问且发现已过期时,重新从数据源获取并更新缓存。这种方式能减少不必要的更新操作,但可能导致在缓存过期到重新加载期间,用户获取到旧数据。

缓存穿透问题及解决方案

缓存穿透:指查询一个一定不存在的数据,由于缓存中没有,每次都会去查询数据库,若恶意用户大量发起这种查询,会给数据库带来巨大压力甚至导致数据库宕机。

解决方案

  1. 布隆过滤器:在查询数据前,先通过布隆过滤器判断数据是否存在。布隆过滤器是一种概率型数据结构,它可以高效地判断一个元素是否在集合中,误判率较低。当布隆过滤器判断数据不存在时,直接返回,不再查询数据库。
  2. 空值缓存:当查询数据库发现数据不存在时,也将这个空值结果缓存起来,并设置较短的过期时间。后续再次查询同样的数据时,直接从缓存中获取空值,避免对数据库的无效查询。