【1】Redis 缓存穿透原理和解决方案


一、原理

正常情况:Redis缓存流程

查询数据时,优先查询Redis:

  • 命中:直接返回查询结果
  • 未命中:查询数据库,返回数据并将数据缓存到Redis中方便下次查询

在这里插入图片描述

问题引出:Redis缓存穿透问题

查询一个不存在的数据时,Redis中也没有,会导致每次查询都会穿过Redis去查询数据库,给予数据库非常大的压力。查询次数过多就会击垮数据库。


二、解决方案

方案一:缓存空数据

返回空数据,并将空数据缓存到Redis中。如:{key:1,value:null}

  • 优点:简单
  • 缺点:
    • 消耗内存 (Redis额外存储开销)
    • 数据不一致 (数据库的数据改变时,可能导致与Redis中的数据不一致)

方案二:布隆过滤器

查询数据时优先查询布隆过滤器,如果存在再去查询Redis和数据库,不存在则直接返回
在这里插入图片描述

  • 优点:
    • 无额外的内存开销
    • 极大的减轻数据库压力
  • 缺点:有一定的误判率
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值