恶意攻击导致的redis缓存击穿的问题

  之前多次提到过缓存击穿后端雪崩问题。

 

# #   其实系统中多数的缓存都是这样来用的:

  程序有限查询缓存,缓存不存在,再查查询数据库。数据库顶不住了,就会造成服务器崩溃,数据库崩溃了,整个系统就挂掉了,也就是雪崩。

  比如登录这个功能,对于新用户,或者恶意攻击的用户肯定是在还从中不存在的。别人就利用这一点,就去恶意攻击。其实这个问题就是拿一个系统中本来不存在的东西去反复尝试,如果不去做防御的话,就会给服务器带来很大的压力,严重的话,服务器崩溃。

  所以这是一个海量数据检查存在不存在的问题。解决方案就是使用布隆过滤器。

 

# # 使用 redis 的 String 的字节数组

  根据string最大的是 512M ,换算后就是 2的32次方,大概就是四十亿的的长度。

 对hashcode进行过滤器长度的取余计算,然后将将对应的位置置为 1 。为1 就是存在。

 也就是这个问题变成了查询缓存前的布隆过滤器的检查工作。

 

 具体操作如下:在布隆过滤器里边先注册用户,其中10001 就是用户,接着对其取模,然后hashcode 对长度进行取余,得到的结果就是二进制数组的下标,将其置为1,代表着存在这个用户。用一个字节来存放一个用户,这就是布隆过滤器的用处所在。

 

 

# # 其中在redis 中操作的命令

 

 本质上还是一个String类型。

 

 

# # 了解布隆过滤器

 

 

# # 布隆过滤器的优缺点

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值