引入RedisRateLimiter

1.类路径:

org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter
spring.cloud.gateway.redis-rate-limiter
在这里插入图片描述

2.内部类路径:

org.springframework.cloud.gateway.filter.ratelimit.RedisRateLimiter.Config
spring.cloud.gateway.redis-rate-limiter.replenishRate:最小值1
spring.cloud.gateway.redis-rate-limiter.burstCapacity:最小值1
在这里插入图片描述

3.进入isAllowed方法

redis两个key
request_rate_limiter.{id}.timestamp:最细维度到秒,当前时间
request_rate_limiter.{id}.tokens:当前时间戳对应令牌数
在这里插入图片描述

4.redis lua脚本处理

在这里插入图片描述

5.状态码

在这里插入图片描述

6.redis集群导致问题

io.lettuce.core.RedisCommandExecutionException: ERR bad lua script for redis cluster, all the keys that the script uses should be passed using the KEYS array, and KEYS should not be in expression

在这里插入图片描述

在这里插入图片描述

报错解决方式
@see 
https://blog.csdn.net/qq_33996921/article/details/107204362
https://www.codeleading.com/article/99294719734/
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐