接口限流防刷:防止用户大量重复访问,一分钟之内或几秒内限制访问多少次
实现思路:
1、将一个用户的访问次数写到缓存里,同时给数据加有效期,次数增加直接对数据+1
2、如果在有效期内,数据超过某数值,访问返回失败
3、有效期过了,重新存入数据
一、构造注解
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Retention(RUNTIME)
@Target(METHOD)
public @interface AccessLimit {
int seconds();
int maxCount();
boolean needLogin() default true;
}
二、pom.xml中引入Redis依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.11</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.7.3</version>
</dependency>
三、yml配置文件配置Redis
spring:
redis:
host: 192.168.1.108
port: 6379