秦皇岛网站排名,做ps找图的网站有哪些,门户网站系统源码,库尔勒谁在做电商网站建设文章目录 缓存问题缓存穿透引入解决方案 缓存雪崩缓存击穿 缓存问题
使用缓存时常见的问题主要分为三个#xff1a;缓存穿透 、缓存雪崩、缓存击穿。
下面对其进行一一学习
缓存穿透
引入
定义#xff1a;缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在#… 文章目录 缓存问题缓存穿透引入解决方案 缓存雪崩缓存击穿 缓存问题
使用缓存时常见的问题主要分为三个缓存穿透 、缓存雪崩、缓存击穿。
下面对其进行一一学习
缓存穿透
引入
定义缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在这样的缓存永远不会生效这些请求都会打到数据库。 导致缓存击穿的原因是当用户使用不存在的请求访问缓存的时候因为缓存中不存在数据则会将请求打到数据库然后数据库也没有相关请求的数据则只能给用户端报错或返回空值。一次这样无效的请求服务器还应对的过来然而当一些(不怀好意的)人使用大量这种无效的请求访问时则会全部打到数据库导致数据库宕机或者拖慢其他正确请求的访问。
那么如何应对这种问题呢
解决方案
常见的解决缓存击穿的方案有以下几种 缓存空对象当一个无效请求打到数据库查询无效时将此次请求进行缓存并赋予null值 优点实现简单维护方便缺点① 额外的内存消耗 ② 可能造成短期的不一致 布隆过滤 优点内存占用较少没有多余key缺点① 实现复杂 ② 存在误判可能 增强id的复杂度 做好数据的基础格式校验 加强用户权限校验
缓存雪崩
定义缓存雪崩是指在同一时间段大量的缓存key同时失效或者Redis服务宕机导致大量请求到达数据库带来巨大压力。 通常的解决方案有以下四种
给不同的Key的TTL添加随机值(防止大量TTL同时到期)利用Redis集群提高服务的可用性给缓存业务添加降级限流策略给业务添加多级缓存
缓存击穿
定义缓存击穿问题也叫热点问题就是一个被高并发访问且缓存重建业务较复杂的Key突然失效无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种 互斥锁(保证一致性) 优点① 没有额外的内存消耗 ② 保证一致性 ③ 实现简单缺点① 线程需要等待性能受到影响 ② 可能有死锁风险 逻辑过期(保证可用性) 优点 线程无需等待性能较好缺点① 不保证一致性 ② 有额外内存消耗 ③ 实现复杂