七叶笔记 » 数据库 » 使用AOP+redis+lua做方法限流的实现

使用AOP+redis+lua做方法限流的实现

需求

公司里使用OneByOne的方式删除数据,为了防止一段时间内删除数据过多,让我这边做一个接口限流,超过一定阈值后报异常,终止删除操作。

实现方式

创建自定义注解 @limit 让使用者在需要的地方配置 count(一定时间内最多访问次数)、 period(给定的时间范围),也就是访问频率。然后通过LimitInterceptor拦截方法的请求, 通过 redis+lua 脚本的方式,控制访问频率。

源码

Limit 注解

用于配置方法的访问频率count、period

LimitKey

用于标记参数,作为redis key值的一部分

LimitType

枚举,redis key值的类型,支持自定义key和ip、methodName中获取key

RedisLimiterHelper

初始化一个限流用到的redisTemplate Bean

LimitInterceptor

使用 aop 的方式来拦截请求,控制访问频率

TestService

使用方式示例

到此这篇关于使用AOP+redis+lua做方法限流的实现的文章就介绍到这了,更多相关AOP+redis+lua限流内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章