--- 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 supported_templates: quota 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 <hostname>:<port number> 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 < validDuration`
`bucketDuration` | `google.protobuf.Duration` | The `bucketDuration` will be ignored if `rateLimitAlgorithm` is `FIXED_WINDOW` 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.