什么是缓存穿透?

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

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

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

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

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

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

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

相关推荐

浏览器缓存是浏览器在本地存储Web资源(如HTML文件、CSS样式表、JavaScript脚本、图像等)的副本,以便在之后的页面访问中能够直接从本地获取这些资源,而无需再次从服务器下载。浏览器缓存可以提供以下优点和在以下场景下使用:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=02b1742be4564f04b7e1bdf3b39333d7提高性能:浏览器缓存能够显著提高网页加载速度。当浏览器首次访问一个网页时,它会下载并缓存其中的资源。在之后的访问中,如果资源未发生变化,则可以直接从缓存中读取,减少了网络请求和等待时间,提高了页面加载速度。减少网络流量:通过使用浏览器缓存,可以减少对服务器的请求次数和相应的网络流量。对于重复访问相同页面的用户,他们可以从缓存中获取资源,而无需再次下载。这对于移动设备以及网络速度较慢的情况下特别有益,可以减少数据传输量,降低用户流量消耗和延迟。降低服务器负载:如果浏览器从缓存中获取资源,而不是向服务器发送请求,那么服务器的负载将减少。这可以使服务器更有效地处理其他请求,并减少响应时间和带宽消耗。支持离线浏览:某些Web应用或网页可以利用浏览器缓存来实现离线浏览功能。一旦页面及其所需的资源被缓存在本地,用户在离线状态下仍然可以访问和浏览该页面。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务