什么是缓存穿透?

缓存穿透是指当一个请求查询/访问一个不存在于缓存中的数据时,该请求会穿透缓存层,直接访问后端数据库或其他数据存储系统。这可能导致对后端系统的过度负载,并且每个请求都需要从后端获取数据,无法利用缓存提供的性能优势。

在前端防止缓存穿透问题的常见方法包括:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=5f0bf65b3be04ac8a2beb28f857943a6

输入合法性验证:在接收到请求之前,对请求的输入进行合法性验证。例如,对于用户输入的查询参数或请求的标识符,进行验证并确保其符合预期的格式和范围。如果请求的数据不存在或无效,可以提前进行处理,返回适当的响应,而不是单纯地将请求传递到后端。

布隆过滤器(Bloom Filter):布隆过滤器是一种概率型数据结构,用于快速判断一个元素是否存在于集合中。在进行查询之前,可以使用布隆过滤器对缓存键进行检查,以过滤掉在缓存中一定不存在的键。这样可以减少对后端系统的不必要查询,同时提高缓存的命中率。

缓存空值(Cache Miss):对于请求中查询的数据,即使在后端不存在该数据,也在缓存中存储一个空值作为响应。这样,在下次查询时,可以直接从缓存中获取空值作为响应,而不需要再次查询后端系统。这种方式可以减少对后端系统的请求次数,并加快响应速度。

设置热门数据的预热策略:对于一些热门的数据或常用的查询,可以在系统启动或低峰期预先将其加载到缓存中。这样可以确保这部分数据在真正被请求时已经存在于缓存中,减少缓存穿透的可能性。

使用缓存层/中间件:引入缓存层或中间件作为前端和后端之间的代理,用于处理查询请求和缓存的查询结果。缓存层可以缓存不同类型的数据,并根据缓存策略和配置决定是否向后端查询数据。这样可以集中管理缓存逻辑,并提供更高效的数据访问。
全部评论

相关推荐

不愿透露姓名的神秘牛友
10-24 16:57
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务