【Redis项目实战 一】缓存穿透,缓存击穿分析以及实际代码解决方案

本文介绍了缓存穿透的概念及其对系统的影响,提出了两种解决方案:缓存空值和布隆过滤器,并详细解释了各自的工作原理和适用场景。对于极热门的缓存数据,文章建议使用分布式锁来避免缓存失效时的并发问题,减少数据库压力。
摘要由CSDN通过智能技术生成

一. 前言

  目前大部分面向公众用户的互联网系统,它的并发请求数量是和在线用户数量正相关的,而 MySQL 能承担的并发读写的量是有上限的,当系统的在线用户超过几万到几十万这个量级的时候,单台 MySQL 就很难应付了。
 
  绝大多数互联网系统,都使用 MySQL 加上 Redis 这对儿经典的组合来解决这个问题。Redis 作为 MySQL 的前置缓存,可以替 MySQL 挡住绝大部分查询请求,很大程度上缓解了 MySQL 并发请求的压力。
 
  那么使用Redis时可能会遇到一些问题,其中缓存穿透以及缓存中数据与db数据的一致性问题是我们需要重点关注的问题。本篇文章先分析下缓存穿透,以及其解决思路是什么。
 
  缓存的更新以及数据一致性问题放在这篇文章中讲解。
 

二. 缓存穿透

1.什么是缓存穿透?

  缓存穿透其实是指从缓存中没有查到数据,而不得不从后端系统(比如数据库)中查询的情况。少量的缓存穿透不可避免,对系统也是没有损害的。
 
  我们需要预防的是,短时间内大量的请求无法命中缓存,请求穿透到数据库,导致数据库繁忙,请求超时。大量的请求超时还会引发更多的重试请求,更多的重试请求让数据库更加繁忙,这样恶性循环导致系统雪崩。
 

2.缓存穿透的解决方案

一般来说我们会有两种解决方案:

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值