首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在redis中使用spring云api网关ratelimit时,响应头中会出现X-RateLimit-Remaining 1?

为什么在redis中使用spring云api网关ratelimit时,响应头中会出现X-RateLimit-Remaining 1?
EN

Stack Overflow用户
提问于 2020-03-17 13:15:24
回答 2查看 488关注 0票数 3

我在我的spring cloud api网关中使用redis实现了ratelimit。这是application.yml的一部分

代码语言:javascript
复制
spring:  
  cloud:
    gateway:
      httpclient:
        ssl:
          useInsecureTrustManager: true
      discovery:
        locator:
          enabled: true
      routes:
        - id: test-rest-service
          uri: lb://test-rest-service
          predicates:
            - Path=/test/**
          filters:
            - RewritePath=/test/(?<path>.*), /$\{path}
            - name: RequestRateLimiter
              args:
                key-resolver: "#{@userRemoteAddressResolver}"
                redis-rate-limiter.replenishRate: 2
                redis-rate-limiter.burstCapacity: 3

我通过postman调用了GET API并检查了响应头。

代码语言:javascript
复制
X-RateLimit-Remaining -1
X-RateLimit-Burst-Capacity 3
X-RateLimit-Replenish-Rate 2

速率限制不起作用。为什么我会得到X-RateLimit-Remaining的负值?什么意思?我该如何修复它?

EN

回答 2

Stack Overflow用户

发布于 2020-04-27 06:24:06

这发生在我身上,因为没有启动Redis实例。您有两个选择:

1)使用docker下载并运行Redis实例:

代码语言:javascript
复制
docker run --name redis -d redis

2)您可以在测试嵌入式Redis Server时使用,如following article中所述,只需添加maven依赖:

代码语言:javascript
复制
<dependency>
  <groupId>it.ozimov</groupId>
  <artifactId>embedded-redis</artifactId>
  <version>0.7.2</version>
  <scope>test</scope>
</dependency>

并包含以下代码片段:

代码语言:javascript
复制
@TestConfiguration
public class TestRedisConfiguration {

    private RedisServer redisServer;

    public TestRedisConfiguration() {
        this.redisServer = new RedisServer(6379);
    }

    @PostConstruct
    public void postConstruct() {
        redisServer.start();
    }

    @PreDestroy
    public void preDestroy() {
        redisServer.stop();
    }
}
票数 0
EN

Stack Overflow用户

发布于 2020-05-18 17:54:33

最近我也遇到了同样的问题。在我的例子中,安装了一个较旧版本的Redis,导致X-RateLimit-Remaining不断被设置为-1。

代码语言:javascript
复制
redis-cli shutdown
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60716588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档