redis的缓存击穿、缓存穿透、缓存雪崩

缓存击穿

缓存击穿是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失败的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个完好无损的桶上凿开一个洞。

如何解决

1. 设置热点永不过期
从redis上看,确实没有设置过期时间,这就保证了,不会出现热点key过期问题,也就是“物理”不过期。
2. 加互斥锁
业界比较常用的做法,是使用mutex。简单地来说,就是在缓存失效的时候(判断拿出来的值为空),不是立即去load db,而是先使用缓存工具的某些带成功操作返回值的操作(比如Redis的SETNX)去set一个mutex key,当操作返回成功时,再进行load db的操作并回设缓存;否则,就重试整个get缓存的方法。伪代码如下:

    public String get(key) {
   
        String value 

相关推荐

  1. Redis缓存击穿缓存雪崩缓存穿透

    2024-04-12 22:44:01       56 阅读
  2. Redis缓存雪崩缓存击穿缓存穿透问题

    2024-04-12 22:44:01       45 阅读
  3. redis缓存击穿缓存穿透缓存雪崩

    2024-04-12 22:44:01       43 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-12 22:44:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-12 22:44:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-12 22:44:01       87 阅读
  4. Python语言-面向对象

    2024-04-12 22:44:01       96 阅读

热门阅读

  1. 【leetcode面试经典150题】45. 快乐数(C++)

    2024-04-12 22:44:01       45 阅读
  2. IP为什么要分类呢

    2024-04-12 22:44:01       44 阅读
  3. linux上blkid命令

    2024-04-12 22:44:01       39 阅读
  4. Kubernetes 部署前内核升级

    2024-04-12 22:44:01       52 阅读
  5. vim插件配置

    2024-04-12 22:44:01       96 阅读
  6. MySQL:MySQL的查询(下)

    2024-04-12 22:44:01       35 阅读
  7. WebKit结构简介

    2024-04-12 22:44:01       37 阅读