缓存击穿

Posted lihuanghe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了缓存击穿相关的知识,希望对你有一定的参考价值。

一。什么数据适合缓存

需要从三个方面分析

1. 数据访问频率 ↑↑

2. 读写比例     读多与少 ↑

3. 数据一致性  ↑↓

技术分享图片

二。 什么是缓存击穿

在高并发下,多线程同时查询同一个资源,如果缓存中没有这个资源,那么这些线程都会去数据库查找,对数据库造成极大压力,缓存失去存在的意义.打个比方,数据库是人,缓存是防弹衣,子弹是线程,本来防弹衣是防止子弹打到人身上的,但是当防弹衣里面没有防弹的物质时,子弹就会穿过它打到人身上. 

三。 如何解决

1. 定时更新

  适合key 比较集中的

2. 检查更新

  每次查询检查是否需要更新

  缺点: 缓存依赖于请求, 没有请求就不换更新缓存

 

3. 分级缓存

  使用两个缓存池 l1, l2  l1未命中数据, 加锁访问数据库, 其他请求访问l2, 数据响应后, 更新l1 ,l2缓存池

4. 加锁

  1. 访问缓存时加锁

  2. 缓存未命中时加锁

  3. 从缓存未命中后加锁, 双重取缓存

  4. 互斥锁

 

原文: https://blog.csdn.net/sanyaoxu_2/article/details/79472465

以上是关于缓存击穿的主要内容,如果未能解决你的问题,请参考以下文章

REDIS12_缓存雪崩缓存穿透基于布隆过滤器解决缓存穿透的问题缓存击穿基于缓存击穿工作实际案例

REDIS08_缓存雪崩缓存穿透基于布隆过滤器解决缓存穿透的问题缓存击穿基于缓存击穿工作实际案例

Go分布式缓存 防止缓存击穿(day6)

Go分布式缓存 防止缓存击穿(day6)

缓存击穿 缓存雪崩

Redis- 缓存击穿