--- title: Redis Quota description: Adapter for a Redis-based quota management system. location: https://istio.io/docs/reference/config/policy-and-telemetry/adapters/redisquota.html layout: protoc-gen-docs generator: protoc-gen-docs aliases: - /docs/reference/config/adapters/redisquota.html number_of_entries: 4 ---

The `redisquota` adapter can be used to support Istio’s quota management system. It depends on a Redis server to store quota values.

This adapter supports the quota template.

## Params

redisquota adapter supports the rate limit quota using either fixed or rolling window algorithm. And it is using Redis as a shared data storage.

Example configuration:

    redisServerUrl: localhost:6379
    connectionPoolSize: 10
    quotas:
      - name: requestCount.quota.istio-system
        maxAmount: 50
        validDuration: 60s
        bucketDuration: 1s
        rateLimitAlgorithm: ROLLING_WINDOW
        overrides:
          - dimensions:
              destination: ratings
              source: reviews
            maxAmount: 12
          - dimensions:
              destination: reviews
            maxAmount: 5

Field | Type | Description
--- | --- | ---
`quotas` | `Params.Quota[]` | The set of known quotas. At least one quota configuration is required
`redisServerUrl` | `string` | Redis connection string : ex) localhost:6379
`connectionPoolSize` | `int64` | Maximum number of idle connections to redis Default is 10 connections per every CPU as reported by runtime.NumCPU.

## Params.Override

Field | Type | Description
--- | --- | ---
`dimensions` | `map<string, string>` | The specific dimensions for which this override applies. String representation of instance dimensions is used to check against configured dimensions. dimensions should not be empty
`maxAmount` | `int64` | The upper limit for this quota override. This value should be bigger than 0

## Params.Quota

Field | Type | Description
--- | --- | ---
`name` | `string` | The name of the quota
`maxAmount` | `int64` | The upper limit for this quota. max_amount should be bigger than 0
`validDuration` | `google.protobuf.Duration` | The amount of time allocated quota remains valid before it is automatically released. This is only meaningful for rate limit quotas. value should be 0 < valid_duration
`bucketDuration` | `google.protobuf.Duration` | bucketduration will be ignored if ratelimitalgorithm is FIXEDWINDOW value should be 0 < bucketduration < validduration
`rateLimitAlgorithm` | `Params.QuotaAlgorithm` | Quota management algorithm. The default value is FIXED_WINDOW
`overrides` | `Params.Override[]` | Overrides associated with this quota. The first matching override is applied.

## Params.QuotaAlgorithm

Algorithms for rate-limiting:

Name | Description
--- | ---
`FIXED_WINDOW` | FIXED_WINDOW The fixed window approach can allow 2x peak specified rate, whereas the rolling-window doesn’t.
`ROLLING_WINDOW` | ROLLING_WINDOW The rolling window algorithm’s additional precision comes at the cost of increased redis resource usage.