Redis 缓存穿透 & 解决思路

背景

在项目中,有一个注册电子健康卡的服务,用户注册电子健康卡时候,都要携带外部流水号来进行注册。

我们的需求是并发情况下不能让流水号重复。

由于每次每个请求都要去判断流水号是否重复,就要去数据库查询实体是否存在,并发情况下导致数据库压力较大,就引入了Redis来减少去请求数据库的次数。

使用Redis就会出现缓存穿透的问题。

缓存穿透

缓存穿透是指缓存和数据库中都没有的数据,用户不断发起请求,我们的数据库不存这些数据时候,这时候用户很可能是攻击者,攻击就会导致数据库压力过大,严重击垮数据库。

以下流程就是会导致缓存穿透:

解决办法-布隆过滤器

缓存穿透说到底就是你要让项目中的“流水号”存在的情况去请求数据库,找到这个实体,找到后抛出异常-重复的流水号。

我会使用布隆过滤器增加校验,如果这个流水号在布隆过滤器中存在,就去请求数据库,不存在就把该流水号放入布隆过滤器中之后进行接下来业务操作注册电子健康卡。

以下为流程图:

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值