笔记:重复请求的处理方式

以前,在项目中接触到的重复请求的处理方式,直接就是用前端置灰就行。但是作为后端开发,一直没有去看看,后端有什么方式来处理,下面就自己总结下,后端处理的方式,这我们首先要知道,后端处理重复请求的话。最基本的就是,我们们需要一个容器或者缓存来存储请求,如果没有东西来存储的化,鬼知道一个请求是否重复请求了。然后在请求处理完之后。就需要将这个请求移除缓存或者容器。基于这两个点。

集合:

        用集合来存储请求,到每一个请求进来的时候。我们都要在一个进入一个过滤器中。而这个过滤器有一个集合容器,里面存储有正在处理的请求。当判断一个请求进来,容器里面有。则会过滤掉请求。如果没有,则进入后端控制层。最后在向前端返回相关的数据的是,要把集合容器中的请求删掉就行。这种方式。有两个要注意的地方。集合的作用域以及高并发下面是不可行的,首先是效率问题,其次这会出现内存溢出的问题。

 

Redis :

       然后就想到了redis来作为过滤器中的存储请求信息的媒介。用redis用几个好处:读取的效率高;可以直接利用redis的setnx 来判断是否存中相关的请求信息;请求信息的存储以及删除的逻辑与集合一致。只是redis的setnx只需要通过设置直接失效就行。

 

注:其是当时我还相到了布隆过滤器,这也是对于布隆过滤器有个知识点没有掌握好,那就是布隆过滤器是不能够删除数据的(lll¬ω¬)。

布隆过滤器如何不能够删除数据了,这就是由于布隆过滤器通过hash计算得来的值来映射其相应的值的位置。在这个二进制的数组中,把其从0 变为 1 的。而hash计算,有hash冲撞的情况出现。所以,是不能够删除值的,因为你根本不知道删除的值对应的hash值是否只是你这个值的hash值。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值