---
next_cursor: eyJzY29yZSI6MCwic2VxIjoxOTgzLCJzaW5jZSI6bnVsbCwidG9vbCI6InJlZGlzIiwidiI6MX0
has_more: false
next: https://sincecutoff.com/v1/changes.md?tool=redis&score=0&cursor=eyJzY29yZSI6MCwic2VxIjoxOTgzLCJzaW5jZSI6bnVsbCwidG9vbCI6InJlZGlzIiwidiI6MX0
items: 4
---
# sincecutoff.com changes: redis

## Redis adds the INCREX window counter rate limiter (redis, 2026-05-25)
Published 2026-10-19
- slug: redis-adds-the-increx-window-counter-rate-limiter-6bcf63c1c287
- score: 0.95

How to use it:

If the application needs an atomic window counter with bounds and expiration, evaluate Redis 8.8.0’s `INCREX` using an integer increment, an upper bound, and `ENX` with the window TTL.

Examples:

```
INCREX <key> BYINT 1 UBOUND <limit> EX <seconds> ENX
```

- why_it_matters: Review whether a Redis-backed application’s rate-limiting logic can use the new window counter command.
- before: The Redis feature issue describes the prior atomic approach as `SCRIPT LOAD` plus `EVALSHA`.
- sources: <https://github.com/redis/redis/releases/tag/8.8.0>, <https://redis.io/docs/latest/commands/increx/>, <https://github.com/redis/redis/issues/14278>
- gotchas: "Version: 8.8.0"; "key (required): Key whose numeric value to increment."; "BYINT increment: Increment by a signed integer; defaults to 1 if no increment option is given. At most one of `BYINT` and `BYFLOAT` may be specified."; "BYFLOAT increment: Increment by a floating-point amount. At most one of `BYFLOAT` and `BYINT` may be specified."; "LBOUND lowerbound: Set the lower bound on the resulting value."; "UBOUND upperbound: Set the upper bound on the resulting value; an out-of-bound increment is skipped by default."; "SATURATE: Cap the result at the applicable bound instead of skipping an out-of-bound increment."; "EX seconds: Set expiration after a positive number of seconds. At most one expiration option may be specified: `EX`, `PX`, `EXAT`, `PXAT`, or `PERSIST`."; "PX milliseconds: Set expiration after a positive number of milliseconds. Mutually exclusive with the other expiration options."; "EXAT unix-time-seconds: Set expiration at a Unix timestamp in seconds. Mutually exclusive with the other expiration options."; "PXAT unix-time-milliseconds: Set expiration at a Unix timestamp in milliseconds. Mutually exclusive with the other expiration options."; "PERSIST: Remove the key’s expiration. Mutually exclusive with the other expiration options and incompatible with `ENX`."; "ENX: Apply the expiration only if the key currently has no TTL. Requires `EX`, `PX`, `EXAT`, or `PXAT`; incompatible with `PERSIST`."; "Prerequisite: Redis Open Source 8.8.0 or later; `INCREX` is available since 8.8.0."

## Redis FT.ALIASLIST lists aliases for an index (redis, 2026-07-29)
Published 2026-10-19
- slug: redis-ft-aliaslist-lists-aliases-for-an-index-9dbb2b858125
- score: 0.97

How to use it:

When you need to list aliases for an index, run `FT.ALIASLIST <index>`.

Examples:

```
FT.ALIASLIST <index>
```

- why_it_matters: List all aliases for a Redis index.
- sources: <https://github.com/redis/redis/releases/tag/8.10.0>, <https://redis.io/docs/latest/commands/ft.aliaslist/>
- gotchas: "Version: 8.10.0"; "index (required): Name of the index whose aliases to list."; "Prerequisite: Available in Redis Open Source / Search 8.10.0."

## Redis SUNIONCARD returns set-union cardinality (redis, 2026-07-29)
Published 2026-10-19
- slug: redis-sunioncard-returns-set-union-cardinality-a778f237dd1e
- score: 0.97

How to use it:

When you need the number of distinct members across multiple Redis sets, run `SUNIONCARD` with the number of keys followed by the set keys.

Examples:

```
SUNIONCARD 2 <set-key-1> <set-key-2>
```

- why_it_matters: Get the cardinality of the union of multiple Redis sets.
- sources: <https://github.com/redis/redis/releases/tag/8.10.0>, <https://redis.io/docs/latest/commands/sunioncard/>
- gotchas: "Version: 8.10.0"; "numkeys (required): Number of set keys that follow."; "key [key ...] (required): One or more set keys to union; missing keys count as empty sets."; "APPROX: Return an approximate cardinality instead of an exact count."; "LIMIT limit: Stop counting at this cardinality; 0 (the default) means unlimited. Works in exact and approximate modes."; "Prerequisite: Available since Redis Open Source 8.10.0."

## Redis XREAD and XREADGROUP add MAXCOUNT and MAXSIZE reply caps (redis, 2026-07-29)
Published 2026-10-19
- slug: redis-xread-and-xreadgroup-add-maxcount-and-maxsize-reply-caps-1df1285cbef2
- score: 0.96

How to use it:

When reading one or more streams on Redis 8.10.0+, add `MAXCOUNT` to cap total entries, `MAXSIZE` to cap reply bytes, or both. At least one entry is returned even if it exceeds `MAXSIZE`; if both caps are set, the first reached applies.

Examples:

```
XREAD MAXCOUNT <entry_limit> MAXSIZE <byte_limit> STREAMS <stream_key> <last_seen_id>
```

```
XREADGROUP GROUP <group> <consumer> MAXCOUNT <entry_limit> MAXSIZE <byte_limit> STREAMS <stream_key> <last_seen_id>
```

- why_it_matters: Cap the cumulative reply entries or size when reading Redis streams.
- sources: <https://github.com/redis/redis/releases/tag/8.10.0>, <https://redis.io/docs/latest/commands/xread/>, <https://redis.io/docs/latest/commands/xreadgroup/>
- gotchas: "Version: 8.10.0"; "MAXCOUNT maxcount: Positive integer: maximum total entries across all named streams. If `COUNT` is also supplied, `MAXCOUNT` must be at least `COUNT`."; "MAXSIZE maxsize: Positive integer: maximum reply size in bytes across all named streams. At least one entry is returned, even if it exceeds this limit."; "STREAMS key [key ...] id [id ...] (required): Stream keys followed by one ID per key; entries with IDs greater than each supplied ID are returned."; "GROUP group consumer (required): For `XREADGROUP`, identifies the consumer group and consumer."; "Prerequisite: Use Redis 8.10.0 or later; these options were added in 8.10.0."

Next: https://sincecutoff.com/v1/changes.md?tool=redis&score=0&cursor=eyJzY29yZSI6MCwic2VxIjoxOTgzLCJzaW5jZSI6bnVsbCwidG9vbCI6InJlZGlzIiwidiI6MX0
Save `next_cursor`; next visit, pass it to get only what was published since.
<!-- end of page -->
