Redis Community Edition 7.4.8 (February 2026)

Update urgency: `SECURITY`: There are security fixes in the release.

Security fixes

- A user can manipulate data read by a connection by injecting `\r\n` sequences into a Redis error reply.

Redis Community Edition 7.4.7 (November 2025)

Update urgency: `HIGH`: There is a critical bug that may affect a subset of users.

Bug fixes

- Potential crash on HyperLogLog with 2GB+ entries

Redis Community Edition 7.4.6 (October 2025)

Security fixes

- (CVE-2025-49844) A Lua script may lead to remote code execution
- (CVE-2025-46817) A Lua script may lead to integer overflow and potential RCE
- (CVE-2025-46818) A Lua script can be executed in the context of another user
- (CVE-2025-46819) LUA out-of-bound read

Bug fixes

- [#14330](https://github.com/redis/redis/pull/14330) Potential use-after-free after pubsub and Lua defrag
- [#14319](https://github.com/redis/redis/pull/14319) Potential crash on Lua script defrag
- [#14164](https://github.com/redis/redis/pull/14164) Prevent `CLIENT UNBLOCK` from unblocking `CLIENT PAUSE`
- [#14165](https://github.com/redis/redis/pull/14165) Endless client blocking for blocking commands
- [#14163](https://github.com/redis/redis/pull/14163) `EVAL` crash when error table is empty
- [#14227](https://github.com/redis/redis/pull/14227) `HINCRBYFLOAT` removes field expiration on replica

Redis Community Edition 7.4.5 (July 2025)

Security fixes

Bug fixes

- [#13966](https://github.com/redis/redis/pull/13966), [#13932](https://github.com/redis/redis/pull/13932) `CLUSTER SLOTS` - TLS port update not reflected in CLUSTER SLOTS
- [#13958](https://github.com/redis/redis/pull/13958) `XTRIM`, `XADD` - incorrect lag due to trimming stream

Redis Community Edition 7.4.4 (May 2025):

Security fixes

* (CVE-2025-27151) redis-check-aof may lead to stack overflow and potential RCE.

Bug fixes

- [#13966](https://github.com/redis/redis/pull/13966), [#13932](https://github.com/redis/redis/pull/13932) `CLUSTER SLOTS` - TLS port update not reflected in CLUSTER SLOTS.
- [#13958](https://github.com/redis/redis/pull/13958) `XTRIM`, `XADD` - incorrect lag due to trimming stream.

Redis Community Edition 7.4.3 (April 2025)

Security fixes

* (CVE-2025-21605) An unauthenticated client can cause an unlimited growth of output buffers.

Bug fixes

* [#13661](https://github.com/redis/redis/pull/13661) `FUNCTION FLUSH` - memory leak when using jemalloc.
* [#13793](https://github.com/redis/redis/pull/13793) `WAITAOF` returns prematurely.
* [#13853](https://github.com/redis/redis/pull/13853) `SLAVEOF` - crash when clients are blocked on lazy free.
* [#13863](https://github.com/redis/redis/pull/13863) `RANDOMKEY` - infinite loop during client pause.
* [#13877](https://github.com/redis/redis/pull/13877) ShardID inconsistency when both primary and replica support it.

Redis Community Edition 7.4.2 (Jan 2025)

Upgrade urgency SECURITY: See security fixes below.

Security fixes

- (CVE-2024-46981) Lua script commands may lead to remote code execution
- (CVE-2024-51741) Denial-of-service due to malformed ACL selectors

Bug fixes

- [#13627](https://github.com/redis/redis/pull/13627) Crash on module memory defragmentation
- [#13338](https://github.com/redis/redis/pull/13338) Streams: `XINFO` lag field is wrong when tombstone is after the `last_id` of the consume group
- [#13473](https://github.com/redis/redis/pull/13473) Streams: `XTRIM` does not update the maximal tombstone, leading to an incorrect lag
- [#13470](https://github.com/redis/redis/pull/13470) `INFO` after `HDEL` show wrong number of hash keys with expiration
- [#13476](https://github.com/redis/redis/pull/13476) Fix a race condition in the `cache_memory` of `functionsLibCtx`
- [#13626](https://github.com/redis/redis/pull/13626) Memory leak on failed RDB loading
- [#13539](https://github.com/redis/redis/pull/13539) Hash: fix key ref for a hash that no longer has fields with expiration on `RENAME`/`MOVE`/`SWAPDB`/`RESTORE`
- [#13443](https://github.com/redis/redis/pull/13443) Cluster: crash when loading cluster config
- [#13422](https://github.com/redis/redis/pull/13422) Cluster: `CLUSTER SHARDS` returns empty array
- [#13465](https://github.com/redis/redis/pull/13465) Cluster: incompatibility with older node versions
- [#13608](https://github.com/redis/redis/pull/13608) Cluster: `SORT ... GET #`: incorrect error message

Redis Community Edition 7.4.1 (October 2024)

Security fixes

* (CVE-2024-31449) Lua library commands may lead to stack overflow and potential RCE.
* (CVE-2024-31227) Potential Denial-of-service due to malformed ACL selectors.
* (CVE-2024-31228) Potential Denial-of-service due to unbounded pattern matching.

For more information, see the [Redis blog post](https://redis.io/blog/security-advisory-cve-2024-31449-cve-2024-31227-cve-2024-31228/) about these vulnerabilities.

Redis Community Edition 7.4 (July 2024)

This is the General Availability release of Redis Community Edition 7.4.

**Changes to new 7.4 features (compared to 7.4 RC2)**
* [#13391](https://github.com/redis/redis/pull/13391),[#13438](https://github.com/redis/redis/pull/13438) Hash - expiration of individual fields: RDB file format changes
* [#13372](https://github.com/redis/redis/pull/13372) Hash - expiration of individual fields: rename and fix counting of `expired_subkeys` metric
* [#13372](https://github.com/redis/redis/pull/13372) Hash - expiration of individual fields: rename `INFO` keyspace field to `subexpiry`

**Configuration parameters**
* [#13400](https://github.com/redis/redis/pull/13400) Add hide-user-data-from-log - allows hiding user data from the log file

**Bug fixes**
* [#13407](https://github.com/redis/redis/pull/13407) Trigger Lua GC after `SCRIPT LOAD`
* [#13380](https://github.com/redis/redis/pull/13380) Fix possible crash due to OOM panic on invalid command
* [#13383](https://github.com/redis/redis/pull/13383) `FUNCTION FLUSH` - improve Lua GC behavior and fix thread race in ASYNC mode
* [#13408](https://github.com/redis/redis/pull/13408) `HEXPIRE`-like commands should emit `HDEL` keyspace notification if expire time is in the past

Redis Community Edition 7.4-rc2 (June 2024)

Upgrade urgency LOW: This is the second Release Candidate for Redis Community Edition 7.4.

**Performance and resource utilization improvements**
* [#13296](https://github.com/redis/redis/pull/13296) Optimize CPU cache efficiency

**Changes to new 7.4 new features (compared to 7.4 RC1)**
* [#13343](https://github.com/redis/redis/pull/13343) Hash - expiration of individual fields: when key does not exist - reply with an array (nonexisting code for each field)
* [#13329](https://github.com/redis/redis/pull/13329) Hash - expiration of individual fields: new keyspace event: `hexpired`

**Modules API - Potentially breaking changes to new 7.4 features (compared to 7.4 RC1)**
* [#13326](https://github.com/redis/redis/pull/13326) Hash - expiration of individual fields: avoid lazy expire when called from a Modules API function

Redis Community Edition 7.4-rc1 (June 2024)

Upgrade urgency LOW: This is the first Release Candidate for Redis Community Edition 7.4.

Here is a comprehensive list of changes in this release compared to 7.2.5.

**New Features**
* [#13303](https://github.com/redis/redis/pull/13303) Hash - expiration of individual fields. 9 commands were introduced:
  - `HEXPIRE` and `HPEXPIRE` set the remaining time to live for specific fields
  - `HEXPIREAT` and `HPEXPIREAT` set the expiration time to a UNIX timestamp for specific fields
  - `HPERSIST` removes the expiration for specific fields
  - `HEXPIRETIME` and `HPEXPIRETIME` get the expiration time for specific fields
  - `HTTL` and `HPTTL` get the remaining time to live for specific fields
* [#13117](https://github.com/redis/redis/pull/13117) `XREAD`: new id value `+` to start reading from the last message
* [#12765](https://github.com/redis/redis/pull/12765) `HSCAN`: new `NOVALUES` flag to report only field names
* [#12728](https://github.com/redis/redis/pull/12728) `SORT`, `SORT_RO`: allow `BY` and `GET` options in cluster mode when the pattern maps to the same slot as the key
* [#12299](https://github.com/redis/redis/pull/12299) `CLIENT KILL`: new optional filter: `MAXAGE maxage` - kill connections older than `maxage` seconds
* [#12971](https://github.com/redis/redis/pull/12971) Lua: expose `os.clock()` API for getting the elapsed time of Lua code execution
* [#13276](https://github.com/redis/redis/pull/13276) Allow `SPUBLISH` command within `MULTI ... EXEC` transactions on replica

**Bug fixes**
* [#12898](https://github.com/redis/redis/pull/12898) `XREADGROUP`: fix entries-read inconsistency between master and replicas
* [#13042](https://github.com/redis/redis/pull/13042) `SORT ... STORE`: fix created lists to respect list compression and packing configs
* [#12817](https://github.com/redis/redis/pull/12817), [#12905](https://github.com/redis/redis/pull/12905) Fix race condition issues between the main thread and module threads
* [#12577](https://github.com/redis/redis/pull/12577) Unsubscribe all clients from replica for shard channel if the master ownership changes
* [#12622](https://github.com/redis/redis/pull/12622) `WAITAOF` could timeout or hang if used after a module command that propagated effects only to replicas and not to AOF
* [#11734](https://github.com/redis/redis/pull/11734) `BITCOUNT` and `BITPOS` with nonexistent key and illegal arguments return an error, not 0
* [#12394](https://github.com/redis/redis/pull/12394) `BITCOUNT`: check for wrong argument before checking if key exists
* [#12961](https://github.com/redis/redis/pull/12961) Allow execution of read-only transactions when out of memory
* [#13274](https://github.com/redis/redis/pull/13274) Fix crash when a client performs ACL change that disconnects itself
* [#13311](https://github.com/redis/redis/pull/13311) Cluster: Fix crash due to unblocking client during slot migration

**Security improvements**
* [#13108](https://github.com/redis/redis/pull/13108) Lua: LRU eviction for scripts generated with `EVAL` *** BEHAVIOR CHANGE ***
* [#12961](https://github.com/redis/redis/pull/12961) Restrict the total request size of `MULTI ... EXEC` transactions
* [#12860](https://github.com/redis/redis/pull/12860) Redact ACL username information and mark `*-key-file-pass configs` as sensitive

**Performance and resource utilization improvements**
* [#12838](https://github.com/redis/redis/pull/12838) Improve performance when many clients call `PUNSUBSCRIBE` / `SUNSUBSCRIBE` simultaneously
* [#12627](https://github.com/redis/redis/pull/12627) Reduce lag when waking `WAITAOF` clients and there is not much traffic
* [#12754](https://github.com/redis/redis/pull/12754) Optimize `KEYS` when pattern includes hashtag and implies a single slot
* [#11695](https://github.com/redis/redis/pull/11695) Reduce memory and improve performance by replacing cluster metadata with slot specific dictionaries
* [#13087](https://github.com/redis/redis/pull/13087) `SCRIPT FLUSH ASYNC` now does not block the main thread
* [#12996](https://github.com/redis/redis/pull/12996) Active memory defragmentation efficiency improvements
* [#12899](https://github.com/redis/redis/pull/12899) Improve performance of read/update operation during rehashing
* [#12536](https://github.com/redis/redis/pull/12536) `SCAN ... MATCH`: Improve performance when the pattern implies cluster slot
* [#12450](https://github.com/redis/redis/pull/12450) `ZRANGE ... LIMIT`: improved performance

**Other general improvements**
* [#13133](https://github.com/redis/redis/pull/13133) Lua: allocate VM code with jemalloc instead of libc and count it as used memory *** BEHAVIOR CHANGE ***
* [#12171](https://github.com/redis/redis/pull/12171) `ACL LOAD`: do not disconnect all clients *** BEHAVIOR CHANGE ***
* [#13020](https://github.com/redis/redis/pull/13020) Allow adjusting defrag configurations while active defragmentation is running
* [#12949](https://github.com/redis/redis/pull/12949) Increase the accuracy of avg_ttl (the average keyspace keys TTL)
* [#12977](https://github.com/redis/redis/pull/12977) Allow running `WAITAOF` in scripts
* [#12782](https://github.com/redis/redis/pull/12782) Implement TCP Keep-Alives across most Unix-like systems
* [#12707](https://github.com/redis/redis/pull/12707) Improved error codes when rejecting scripts in cluster mode
* [#12596](https://github.com/redis/redis/pull/12596) Support `XREAD ... BLOCK` in scripts; rejected only if it ends up blocking

**New metrics**
* [#12849](https://github.com/redis/redis/pull/12849) `INFO`: `pubsub_clients` - number of clients in Pub/Sub mode
* [#12966](https://github.com/redis/redis/pull/12966) `INFO`: `watching_clients` - number of clients that are watching keys
* [#12966](https://github.com/redis/redis/pull/12966) `INFO`: `total_watched_keys` - number of watched keys
* [#12476](https://github.com/redis/redis/pull/12476) `INFO`: `client_query_buffer_limit_disconnections` - count client input buffer OOM events
* [#12476](https://github.com/redis/redis/pull/12476) `INFO`: `client_output_buffer_limit_disconnections` - count client output buffer OOM events
* [#12996](https://github.com/redis/redis/pull/12996) `INFO`: `allocator_muzzy` - memory returned to the OS but still shows as RSS until the OS reclaims it
* [#13108](https://github.com/redis/redis/pull/13108) `INFO`: `evicted_scripts` - number of evicted eval scripts. Users can check it to see if they are abusing EVAL
* [#12996](https://github.com/redis/redis/pull/12996) `MEMORY STATS`: `allocator.muzzy` - memory returned to the OS but still shows as RSS until the OS reclaims it
* [#12913](https://github.com/redis/redis/pull/12913) `INFO MEMORY` `mem_overhead_db_hashtable_rehashing` - memory resharding overhead (only the memory that will be released soon)
* [#12913](https://github.com/redis/redis/pull/12913) `MEMORY STATS`: `overhead.db.hashtable.lut` - total overhead of dictionary buckets in databases
* [#12913](https://github.com/redis/redis/pull/12913) `MEMORY STATS`: `overhead.db.hashtable.rehashing` - temporary memory overhead of database dictionaries currently being rehashed
* [#12913](https://github.com/redis/redis/pull/12913) `MEMORY STATS`: `db.dict.rehashing.count` - number of top level dictionaries currently being rehashed
* [#12966](https://github.com/redis/redis/pull/12966) `CLIENT LIST`: `watch` - number of keys each client is currently watching

**Modules API**
* [#12985](https://github.com/redis/redis/pull/12985) New API calls: `RM_TryCalloc` and `RM_TryRealloc` - allow modules to handle memory allocation failures gracefully
* [#13069](https://github.com/redis/redis/pull/13069) New API call: `RM_ClusterKeySlot` - which slot a key will hash to
* [#13069](https://github.com/redis/redis/pull/13069) New API call: `RM_ClusterCanonicalKeyNameInSlot` - get a consistent key that will map to a slot
* [#12486](https://github.com/redis/redis/pull/12486) New API call: `RM_AddACLCategory` - allow modules to declare new ACL categories

**Configuration parameters**
* [#12178](https://github.com/redis/redis/pull/12178) New configuration parameters: `max-new-connections-per-cycle` and `max-new-tls-connections-per-cycle` to limit the number of new client connections per event-loop cycle
* [#7351](https://github.com/redis/redis/pull/7351) Rename some CPU configuration parameters for style alignment. Added alias to the old names to avoid breaking change

**CLI tools**
* [#10609](https://github.com/redis/redis/pull/10609) redis-cli: new `-t <timeout>` argument: specify server connection timeout in seconds
* [#11315](https://github.com/redis/redis/pull/11315) redis-cli: new `-4` and `-6` flags to prefer IPV4 or IPV6 on DNS lookup
* [#12862](https://github.com/redis/redis/pull/12862) redis-cli: allows pressing up arrow to return any command (including sensitive commands which are still not persisted)
* [#12543](https://github.com/redis/redis/pull/12543) redis-cli: add reverse history search (like Ctrl+R in terminals)
* [#12826](https://github.com/redis/redis/pull/12826) redis-cli: add `--keystats` and `--keystats-samples` to combines `--memkeys` and `--bigkeys` with additional distribution data
* [#12735](https://github.com/redis/redis/pull/12735) redis-cli: fix: `--bigkeys` and `--memkeys` now work on cluster replicas
* [#9411](https://github.com/redis/redis/pull/9411) redis-benchmark: add support for binary strings
* [#12986](https://github.com/redis/redis/pull/12986) redis-benchmark: fix: pick random slot for a node to distribute operation across slots


Redis Open Source 8.0 release notes

Summary: Redis Open Source 8.0 release notes.

Redis Open Source 8.0.6 (February 2026)

Update urgency: `SECURITY`: There are security fixes in the release.

Security fixes

- A user can manipulate data read by a connection by injecting `\r\n` sequences into a Redis error reply.

Redis Open Source 8.0.5 (November 2025)

Update urgency: `HIGH`: There are critical bugs that may affect a subset of users.

Bug fixes

- `HGETEX` - potential crash when `FIELDS` is used  and `numfields` is missing
- Potential crash on HyperLogLog with 2GB+ entries
- Cuckoo filter - Division by zero in Cuckoo filter insertion
- Cuckoo filter - Counter overflow
- Bloom filter - Arbitrary memory read/write with invalid filter
- Bloom filter - Out-of-bounds access with empty chain
- Bloom filter - Restore invalid filter
- Top-k - Out-of-bounds access

Redis Open Source 8.0.4 (October 2025)

Security fixes

- (CVE-2025-49844) A Lua script may lead to remote code execution
- (CVE-2025-46817) A Lua script may lead to integer overflow and potential RCE
- (CVE-2025-46818) A Lua script can be executed in the context of another user
- (CVE-2025-46819) LUA out-of-bound read

New Features

- [#14223](https://github.com/redis/redis/pull/14223) `VSIM`: new `EPSILON` argument to specify maximum distance

Bug fixes

- [#14330](https://github.com/redis/redis/pull/14330) Potential use-after-free after pubsub and Lua defrag
- [#14319](https://github.com/redis/redis/pull/14319) Potential crash on Lua script defrag
- [#14224](https://github.com/redis/redis/pull/14224) `HINCRBYFLOAT` removes field expiration on replica
- [#14164](https://github.com/redis/redis/pull/14164) Prevent `CLIENT UNBLOCK` from unblocking `CLIENT PAUSE`
- [#14165](https://github.com/redis/redis/pull/14165) Endless client blocking for blocking commands
- [#14144](https://github.com/redis/redis/pull/14144) Vector sets - RDB format is not compatible with big endian machines
- [#14163](https://github.com/redis/redis/pull/14163) `EVAL` crash when error table is empty
- [#14143](https://github.com/redis/redis/pull/14143) Gracefully handle short read errors for hashes with TTL during full sync

Redis Open Source 8.0.3 (July 2025)

Security fixes

* (CVE-2025-32023) Fix out-of-bounds write in `HyperLogLog` commands
* (CVE-2025-48367) Retry accepting other connections even if the accepted connection reports an error

New Features

- [#14065](https://github.com/redis/redis/pull/14065) `VSIM`: Add new `WITHATTRIBS` option to return the JSON attribute associated with an element

Bug fixes

- [#14085](https://github.com/redis/redis/pull/14085) A short read may lead to an `exit()` on a replica
- [#14092](https://github.com/redis/redis/pull/14092) `db->expires` is not defragmented

Redis Open Source 8.0.2 (May 2025)

Security fixes

- (CVE-2025-27151) redis-check-aof may lead to stack overflow and potential RCE

Bug fixes

- [#14081](https://github.com/redis/redis/pull/14081) Cron-based timers run twice as fast when active defrag is enabled.

Other general improvements

- [#14048](https://github.com/redis/redis/pull/14048) `LOLWUT` improvements for Redis 8.

Redis Open Source 8.0.1 (May 2025)

Update urgency: `MODERATE`: Plan an upgrade of the server, but it's not urgent.

Performance and resource utilization improvements

- [#13959](https://github.com/redis/redis/pull/13959) Vector sets - faster `VSIM` `FILTER` parsing.

Bug fixes

- [#QE6083](https://github.com/RediSearch/RediSearch/pull/6083) Query Engine - revert default policy `search-on-timeout` to `RETURN`.
- [#QE6050](https://github.com/RediSearch/RediSearch/pull/6050) Query Engine - `@__key` on `FT.AGGREGATE` used as reserved field name preventing access to Redis keyspace.
- [#QE6077](https://github.com/RediSearch/RediSearch/pull/6077) Query Engine - crash when calling `FT.CURSOR DEL` while reading from the CURSOR.

Notes

- Fixed incorrect text in the license files.

Redis Open Source 8.0.0 (May 2025)

This is the General Availability release of Redis Open Source 8.0.

Redis 8.0 deprecates previous Redis and Redis Stack versions.

Stand alone RediSearch, RedisJSON, RedisTimeSeries, and RedisBloom modules are no longer needed as they are now part of Redis.

Major changes compared to 7.4.2

- Name change: Redis Community Edition is now Redis Open Source
- License change: licensed under your choice of
  - (a) the Redis Source Available License 2.0 (RSALv2); or
  - (b) the Server Side Public License v1 (SSPLv1); or
  - (c) the GNU Affero General Public License (AGPLv3)
- Redis Search and 8 new data structures are now an integral part of Redis 8.
  - (1) Redis Search, which now supports both horizontal and vertical scaling for search, query, and vector workloads.
  - (2) JSON, a queryable JSON document data type.
  - (3) Time series.
  - (4-8) Five probabilistic data structures: Bloom filter, Cuckoo filter, Count-min sketch, Top-k, and t-digest.
  - (9) Vector set [preview], a data structure designed for vector similarity search, inspired by sorted set.
  - These nine components are included in all binary distributions.

  - See the [build instructions]() for information about building from source code.
  - New configuration file: `redis-full.conf`, loads Redis with all components,
    and contains new configuration parameters for Redis Search and the new data structures.
  - New ACL categories: `@search`, `@json`, `@timeseries`, `@bloom`, `@cuckoo`, `@cms`, `@topk`, and `@tdigest` commands are also included in the existing ACL categories such as `@read` and `@write`. See [below]() for information about potentially breaking changes.
- More than 30 performance and resource utilization improvements.
- A new I/O threading implementation, which enables throughput increase on multi-core environments
  (set with the `io-threads` configuration parameter).
- An improved replication mechanism that is more performant and robust.
- New hash commands: [HGETDEL](), [HGETEX](), and [HSETEX]()

For more details, see the release notes for the [8.0-M01](https://github.com/redis/redis/releases/tag/8.0-m01), [8.0-M02](https://github.com/redis/redis/releases/tag/8.0-m02), [8.0-M03](https://github.com/redis/redis/releases/tag/8.0-m03), [8.0-M04](https://github.com/redis/redis/releases/tag/8.0-m04), and [8.0-RC1](https://github.com/redis/redis/releases/tag/8.0-rc1) releases of Redis Open Source.

Binary distributions

- [Alpine and Debian Docker images](https://hub.docker.com/_/redis)
- [Install using snap](https://github.com/redis/redis-snap)
- [Install using brew](https://github.com/redis/homebrew-redis)
- [Install using RPM](https://github.com/redis/redis-rpm)
- [Install using Debian APT](https://github.com/redis/redis-debian)

Redis 8.0.0 was tested on the following operating systems

- Ubuntu 20.04 (Focal Fossa), 22.04 (Jammy Jellyfish), and 24.04 (Noble Numbat).
- Rocky Linux 8.10 and 9.5.
- AlmaLinux 8.10 and 9.5.
- Debian 11 (Bullseye) and 12 (Bookworm).
- macOS 13 (Ventura), 14 (Sonoma), and 15 (Sequoia).

Supported upgrade paths (by replication or persistence)

- From previous Redis versions without modules.
- From previous Redis versions with modules (RediSearch, RedisJSON, RedisTimeSeries, RedisBloom).
- From Redis Stack 7.2 or 7.4.

Security fixes (compared to 8.0-RC1)

* (CVE-2025-21605) An unauthenticated client can cause an unlimited growth of output buffers

Bug fixes (compared to 8.0-RC1)

- [#13966](https://github.com/redis/redis/pull/13966), [#13932](https://github.com/redis/redis/pull/13932) `CLUSTER SLOTS` - TLS port update not reflected.
- [#13958](https://github.com/redis/redis/pull/13958) `XTRIM`, `XADD` - incorrect lag due to trimming stream.
- [#13931](https://github.com/redis/redis/pull/13931) `HGETEX` - wrong order of keyspace notifications.

Redis 8 introduces the following data structure and processing engine ACL categories.

| New ACL commands category names | Included commands               |
| :----                           | :----                           |
| `search`                        | All Redis Search commands |
| `json`                          | All JSON commands               |
| `timeseries`                    | All time series commands        |
| `bloom`                         | All Bloom filter commands       |
| `cuckoo`                        | All cuckoo filter commands      |
| `topk`                          | All top-k commands              |
| `cms`                           | All count-min sketch commands   |
| `tdigest`                       | All t-digest commands           |

You can use these new categories in your ACL rules.

Time series notes

The following time series commands retrieve data from all keys that match a given filter expression: `TS.MGET`, `TS.MRANGE`, and `TS.MREVRANGE`.

There can be a case where a user may have to only some of the matching keys. In such cases, the command’s result is an error message: "*current user doesn't have read permission to one or more keys that match the specified filter*".

On the other hand, `TS.QUERYINDEX` does not require `@read` access to the keys that match the specified filter, as it accesses only time series metadata (name and labels) and not content (measurements).

Redis Search notes

The following Redis Search commands may retrieve data from all keys that match the prefixes defined in the index (that is, all indexed documents, per-index):

- `FT.SEARCH`
- `FT.AGGREGATE` (may be followed by `FT.CURSOR`)
- `FT.PROFILE`

Only ACL users with access to a superset of the key prefixes defined during index creation can create, modify, or read the index. For example, a user with the key ACL pattern `h:*` can create an index with keys prefixed by `h:*` or `h:p*`, but not keys prefixed by `h*`, `k:*`, or `k*`, because these prefixes may involve keys to which the user does not have access.


Redis Open Source 8.2 release notes

Summary: Redis Open Source 8.2 release notes.

Redis Open Source 8.2.5 (February 2026)

Update urgency: `SECURITY`: There are security fixes in the release.

Security fixes

- A user can manipulate data read by a connection by injecting `\r\n` sequences into a Redis error reply.

Redis Open Source 8.2.4 (February 2026)

Security fixes

- RedisTimeSeries/RedisTimeSeries[#1837](https://github.com/redistimeseries/redistimeseries/pull/1837), RedisJSON/RedisJSON[#1474](https://github.com/redisjson/redisjson/pull/1474) Hide Personally Identifiable Information from server log.

Bug fixes

- RedisJSON/RedisJSON[#1430](https://github.com/redisjson/redisjson/pull/1430) Malformed panic log messages (MOD-9365).
- RedisBloom/RedisBloom[#945](https://github.com/redisbloom/redisbloom/pull/945) Bloom filter: crash on RDB load on large number of filters (MOD-11590).
- RediSearch/RediSearch[#6973](https://github.com/redisearch/redisearch/pull/6973) Correct empty string token counting in byteOffset calculations to ensure accurate text position tracking (MOD-11233).
- RediSearch/RediSearch[#6995](https://github.com/redisearch/redisearch/pull/6995) Prevent `FT.INFO` command fanout to replicas to reduce unnecessary cluster traffic.
- RediSearch/RediSearch[#7034](https://github.com/redisearch/redisearch/pull/7034) Correct goto statement handling on RDB load.
- RediSearch/RediSearch[#7154](https://github.com/redisearch/redisearch/pull/7154) Display Background Indexing OOM warning in `FT.AGGREGATE` when memory limits are approached (MOD-11817).
- RediSearch/RediSearch[#7219](https://github.com/redisearch/redisearch/pull/7219) Resolve concurrency issue in Reducer that caused intermittent errors (MOD-12243).
- RediSearch/RediSearch[#7255](https://github.com/redisearch/redisearch/pull/7255) Correct `BM25STD` underflow wraparound to prevent incorrect scoring (MOD-12223).
- RediSearch/RediSearch[#7264](https://github.com/redisearch/redisearch/pull/7264) Ensure accurate `totalDocsLen` updates to maintain correct document statistics (MOD-12234).
- RediSearch/RediSearch[#7275](https://github.com/redisearch/redisearch/pull/7275) Report used memory as unsigned long to prevent overflow (RED-169833).
- RediSearch/RediSearch[#7350](https://github.com/redisearch/redisearch/pull/7350) Allow `FT.CREATE` with LeanVec parameters on non-Intel architectures (RED-176382).
- RediSearch/RediSearch[#7384](https://github.com/redisearch/redisearch/pull/7384) Reduce index load from RDB temporary memory overhead (MOD-12212).
- RediSearch/RediSearch[#7435](https://github.com/redisearch/redisearch/pull/7435) Ensure full profile output on timeout with `RETURN` policy in `FT.PROFILE` (MOD-12320).
- RediSearch/RediSearch[#7446](https://github.com/redisearch/redisearch/pull/7446) Remove outdated validation from debug aggregate in cluster mode (MOD-12435).
- RediSearch/RediSearch[#7458](https://github.com/redisearch/redisearch/pull/7458) Correct GC regression that caused stability issues (MOD-12538).
- RediSearch/RediSearch[#7459](https://github.com/redisearch/redisearch/pull/7459) Prevent potential double-free in Fork GC error path (MOD-12521).
- RediSearch/RediSearch[#7470](https://github.com/redisearch/redisearch/pull/7470) Remove draining from Flush callback to avoid blocking.
- RediSearch/RediSearch[#7499](https://github.com/redisearch/redisearch/pull/7499) Propagate `HGETALL` command in HDT mode (MOD-12662).
- RediSearch/RediSearch[#7534](https://github.com/redisearch/redisearch/pull/7534) Reduce number of worker threads asynchronously to prevent performance degradation (MOD-12252, MOD-11658).
- RediSearch/RediSearch[#7554](https://github.com/redisearch/redisearch/pull/7554) Handle Coordinator case when `SCORE` is sent alone without extra fields (MOD-12647).
- RediSearch/RediSearch[#7561](https://github.com/redisearch/redisearch/pull/7561) Prevent memory corruption when freeing searchRequestCtx on error (MOD-12699).
- RediSearch/RediSearch[#7685](https://github.com/redisearch/redisearch/pull/7685) Resolve cursor logical leak that could lead to resource exhaustion (MOD-12807).
- RediSearch/RediSearch[#7710](https://github.com/redisearch/redisearch/pull/7710) Add support for `WITHCOUNT` in `FT.AGGREGATE` (MOD-11751).
- RediSearch/RediSearch[#7794](https://github.com/redisearch/redisearch/pull/7794) Correctly handle binary data with embedded NULLs to prevent crashes (MOD-13010).
- RediSearch/RediSearch[#7812](https://github.com/redisearch/redisearch/pull/7812) Correct SVS GC for no-workers case (MOD-12983).
- RediSearch/RediSearch[#7873](https://github.com/redisearch/redisearch/pull/7873) Handle warnings in empty `FT.AGGREGATE` replies in cluster mode (MOD-12640).
- RediSearch/RediSearch[#7886](https://github.com/redisearch/redisearch/pull/7886) Remove non-TEXT fields from spec's keys dictionary to prevent incorrect field handling (MOD-13150).
- RediSearch/RediSearch[#7901](https://github.com/redisearch/redisearch/pull/7901) Support multiple warnings in reply to prevent warning loss (MOD-13252).
- RediSearch/RediSearch[#8083](https://github.com/redisearch/redisearch/pull/8083) Correct `FULLTEXT` field metric count accuracy (MOD-13432).
- RediSearch/RediSearch[#8153](https://github.com/redisearch/redisearch/pull/8153) Resolve config registration issue (RED-171841).
- RediSearch/RediSearch[#7371](https://github.com/redisearch/redisearch/pull/7371) Validate `search-min-operation-workers` min value correctly (MOD-12383).
- RediSearch/RediSearch[#8151](https://github.com/redisearch/redisearch/pull/8151) Correct `FT.PROFILE` shard total profile time calculation (MOD-13735, MOD-13181).
- RediSearch/RediSearch[#7165](https://github.com/redisearch/redisearch/pull/7165) (Redis Enterprise only) `FT.DROPINDEX` as touches-arbitrary-keys for proper cluster handling causing crash on A-A (MOD-11090).
- RediSearch/RediSearch[#7023](https://github.com/redisearch/redisearch/pull/7023) (Redis Enterprise only) Ensure all `FT.SUG*` commands are hashslot-aware to prevent cluster routing errors (MOD-11756).

- RediSearch/RediSearch[#7496](https://github.com/redisearch/redisearch/pull/7496) Vector search performance improvements (MOD-12011, MOD-12063, MOD-12629, MOD-12346).
- RediSearch/RediSearch[#7694](https://github.com/redisearch/redisearch/pull/7694) Use asynchronous jobs in GC for SVS to reduce blocking (MOD-12668).

Metrics

- RediSearch/RediSearch[#7614](https://github.com/redisearch/redisearch/pull/7614) Track timeout errors and warnings in info (MOD-12419).
- RediSearch/RediSearch[#7646](https://github.com/redisearch/redisearch/pull/7646) Track `maxprefixexpansions` errors and warnings in info (MOD-12417).
- RediSearch/RediSearch[#7957](https://github.com/redisearch/redisearch/pull/7957) Persist query warnings across cursor reads (MOD-12984).
- RediSearch/RediSearch[#7341](https://github.com/redisearch/redisearch/pull/7341) Rename `FT.PROFILE` counter fields for clarity (MOD-6056).
- RediSearch/RediSearch[#7436](https://github.com/redisearch/redisearch/pull/7436) Enhance `FT.PROFILE` with vector search execution details (MOD-12263).
- RediSearch/RediSearch[#7737](https://github.com/redisearch/redisearch/pull/7737) Add `Internal cursor reads` metric to cluster `FT.PROFILE` output (MOD-12414).
- RediSearch/RediSearch[#7692](https://github.com/redisearch/redisearch/pull/7692) Declare query error struct on `_FT.CURSOR PROFILE` (MOD-12955).
- RediSearch/RediSearch[#7552](https://github.com/redisearch/redisearch/pull/7552) Add `active_io_threads` metric (MOD-12069, MOD-12695).
- RediSearch/RediSearch[#7564](https://github.com/redisearch/redisearch/pull/7564) Add `active_worker_threads` metric (MOD-12694, MOD-12069).
- RediSearch/RediSearch[#7623](https://github.com/redisearch/redisearch/pull/7623) Add `active_coord_threads` metric (MOD-12694, MOD-12069).
- RediSearch/RediSearch[#7626](https://github.com/redisearch/redisearch/pull/7626) Add `*_pending_jobs` metrics for job queues (MOD-12069).
- RediSearch/RediSearch[#7672](https://github.com/redisearch/redisearch/pull/7672) Add pending workers admin jobs metric (MOD-12069, MOD-12791).
- RediSearch/RediSearch[#7732](https://github.com/redisearch/redisearch/pull/7732) Introduce `active_topology_update_threads` metric (MOD-12069, MOD-12790).
- RediSearch/RediSearch[#7759](https://github.com/redisearch/redisearch/pull/7759) Extend indexing metrics for better observability (MOD-12070).

Configuration parameters

- RediSearch/RediSearch[#7083](https://github.com/redisearch/redisearch/pull/7083) Add default scorer configuration option (MOD-10037)

Redis Open Source 8.2.3 (November 2025)

Update urgency: `SECURITY`: There is a security fix in the release.

Security fixes

- (CVE-2025-62507) `XACKDEL` - potential stack overflow and RCE

Bug fixes

- `HGETEX` - potential crash when `FIELDS` is used  and `numfields` is missing
- Potential crash on HyperLogLog with 2GB+ entries
- Cuckoo filter - Division by zero in Cuckoo filter insertion
- Cuckoo filter - Counter overflow
- Bloom filter - Arbitrary memory read/write with invalid filter
- Bloom filter - Out-of-bounds access with empty chain
- Bloom filter - Restore invalid filter
- Top-k - Out-of-bounds access

Redis Open Source 8.2.2 (October 2025)

Security fixes

- (CVE-2025-49844) A Lua script may lead to remote code execution
- (CVE-2025-46817) A Lua script may lead to integer overflow and potential RCE
- (CVE-2025-46818) A Lua script can be executed in the context of another user
- (CVE-2025-46819) LUA out-of-bound read

New Features

- [#14223](https://github.com/redis/redis/pull/14223) `VSIM`: new `EPSILON` argument to specify maximum distance
- [#Q6867](https://github.com/RediSearch/RediSearch/pull/6867), [#Q6845](https://github.com/RediSearch/RediSearch/pull/6845) `SVS-VAMANA`: allow use of `BUILD_INTEL_SVS_OPT` flag for Intel optimisations (MOD-10920)

Bug fixes

- [#14319](https://github.com/redis/redis/pull/14319) Potential crash on Lua script defrag
- [#14323](https://github.com/redis/redis/pull/14323) Potential crash on streams and HFE defrag
- [#14330](https://github.com/redis/redis/pull/14330) Potential use-after-free after pubsub and Lua defrag
- [#14288](https://github.com/redis/redis/pull/14288) `MEMORY USAGE`: fix reported value
- [#14259](https://github.com/redis/redis/pull/14259) `XGROUP CREATE`, `XGROUP SETID`: limit `ENTRIESREAD` value to the number of entries added to the stream
- [#J1374](https://github.com/RedisJSON/RedisJSON/issues/1374) `JSON.DEL` doesn’t delete all matching object members / array elements (MOD-11032, MOD-11067)
- [#P886](https://github.com/RedisBloom/RedisBloom/pull/886) `TDIGEST.CREATE` crashes (OOM) on huge initialization values (MOD-10840)
- [#Q6787](https://github.com/RediSearch/RediSearch/pull/6787) Potential shard restart while reindexing vectors on RDB loading (MOD-11011)
- [#Q6676](https://github.com/RediSearch/RediSearch/pull/6676) Potential crash when using small `CONSTRUCTION_WINDOW_SIZE` on `SVS-VAMANA` (MOD-10771)
- [#Q6701](https://github.com/RediSearch/RediSearch/pull/6701) Potential crash (OOM) in heavy updates due to a file descriptor leak (MOD-10975)
- [#Q6723](https://github.com/RediSearch/RediSearch/pull/6723) Potential crash when using ACL rules (MOD-10748)
- [#Q6641](https://github.com/RediSearch/RediSearch/pull/6641) `INFO SEARCH`: `search_used_memory_indexes` vector index memory value incorrect
- [#Q6665](https://github.com/RediSearch/RediSearch/pull/6665) `FT.PROFILE`: more accurate execution duration measurements (MOD-10622)

Performance and resource utilization

- [#Q6648](https://github.com/RediSearch/RediSearch/pull/6648) Improve RESP3 serialization performance (MOD-9687)

Metrics

- [#Q6671](https://github.com/RediSearch/RediSearch/pull/6671) `INFO SEARCH`: new `SVS-VAMANA` metrics

Redis Open Source 8.2.1 (August 2025)

Update urgency: `MODERATE`: Program an upgrade of the server, but it's not urgent.

Bug fixes

- [#14240](https://github.com/redis/redis/pull/14240) `INFO KEYSIZES` - potential incorrect histogram updates on cluster mode with modules.
- [#14274](https://github.com/redis/redis/pull/14274) Disable Active Defrag during flushing replica.
- [#14276](https://github.com/redis/redis/pull/14276) `XADD` or `XTRIM` can crash the server after loading RDB.
- [#Q6601](https://github.com/RediSearch/RediSearch/pull/6601) Potential crash when running `FLUSHDB` (MOD-10681).

Performance and resource utilization

- Query Engine - LeanVec and LVQ proprietary Intel optimizations were removed from Redis Open Source.
- [#Q6621](https://github.com/RediSearch/RediSearch/pull/6621) Fix regression in `INFO` (MOD-10779).

Redis Open Source 8.2 (August 2025)

This is the General Availability release of Redis 8.2 in Redis Open Source.

Headlines

Major changes compared to 8.0

- Streams - new commands: `XDELEX` and `XACKDEL`; extension to `XADD` and `XTRIM`.
- Bitmap - `BITOP`: new operators: `DIFF`, `DIFF1`, `ANDOR`, and `ONE`.
- Query Engine - new SVS-VAMANA vector index type which supports vector compression.
- More than 15 performance and resource utilization improvements.
- New metrics: per-slot usage metrics, key size distributions for basic data types, and more.

Binary distributions

- Alpine and Debian Docker images - https://hub.docker.com/_/redis
- Install using snap - see https://github.com/redis/redis-snap
- Install using brew - see https://github.com/redis/homebrew-redis
- Install using RPM - see https://github.com/redis/redis-rpm
- Install using Debian APT - see https://github.com/redis/redis-debian

- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat)
- Rocky Linux 8.10, 9.5
- AlmaLinux 8.10, 9.5
- Debian 12 (Bookworm)
- macOS 13 (Ventura), 14 (Sonoma), 15 (Sequoia)

Security fixes (compared to 8.2-RC1)

- (CVE-2025-32023) Fix out-of-bounds write in `HyperLogLog` commands.
- (CVE-2025-48367) Retry accepting other connections even if the accepted connection reports an error.

New Features (compared to 8.2-RC1)

- [#14141](https://github.com/redis/redis/pull/14141) Keyspace notifications - new event types:
  - `OVERWRITTEN` - the value of a key is completely overwritten
  - `TYPE_CHANGED` - key type change

Bug fixes (compared to 8.2-RC1)

- [#14162](https://github.com/redis/redis/pull/14162) Crash when using evport with I/O threads.
- [#14163](https://github.com/redis/redis/pull/14163) `EVAL` crash when error table is empty.
- [#14144](https://github.com/redis/redis/pull/14144) Vector sets - RDB format is not compatible with big endian machines.
- [#14165](https://github.com/redis/redis/pull/14165) Endless client blocking for blocking commands.
- [#14164](https://github.com/redis/redis/pull/14164) Prevent `CLIENT UNBLOCK` from unblocking `CLIENT PAUSE`.
- [#14216](https://github.com/redis/redis/pull/14216) TTL was not removed by the `SET` command.
- [#14224](https://github.com/redis/redis/pull/14224) `HINCRBYFLOAT` removes field expiration on replica.

Performance and resource utilization improvements (compared to 8.2-RC1)

- [#Q6430](https://github.com/RediSearch/RediSearch/pull/6430) More compression variants for the SVS-VAMANA vector index.
- [#Q6535](https://github.com/RediSearch/RediSearch/pull/6535) `SHARD_K_RATIO` parameter - favor network latency over accuracy for KNN vector query in a Redis cluster (unstable feature) (MOD-10359).
- [#14144](https://github.com/redis/redis/pull/14144) Vector set - improve RDB loading / RESTORE speed by storing the worst link info .

Modules API

- [#14051](https://github.com/redis/redis/pull/14051) `RedisModule_Get*`, `RedisModule_Set*` - allow modules to access Redis configurations.
- [#14114](https://github.com/redis/redis/pull/14114) `RM_UnsubscribeFromKeyspaceEvents` - unregister a module from specific keyspace notifications.

Redis Open Source 8.2-RC1 (July 2025)

This is the first Release Candidate of Redis Open Source 8.2.

Release Candidates are feature-complete pre-releases. Pre-releases are not suitable for production use.

Headlines

Redis 8.2 introduces major performance and memory footprint improvements, new commands, and command extensions.

Redis 8.2-RC1 is available as a Docker image and can be downloaded from [Docker Hub](https://hub.docker.com/_/redis). Additional distributions will be introduced in upcoming pre-releases.

Security fixes (compared to 8.2-M01)

- (CVE-2025-27151) redis-check-aof may lead to stack overflow and potential RCE

New Features (compared to 8.2-M01)

- [#14130](https://github.com/redis/redis/pull/14130) Streams - new commands: `XDELEX` and `XACKDEL`; extension to `XADD` and `XTRIM`.
- [#14039](https://github.com/redis/redis/pull/14039) New command: `CLUSTER SLOT-STATS` - get per-slot usage metrics such as key count, CPU time, and network I/O.
- [#14122](https://github.com/redis/redis/pull/14122) `VSIM` - new `IN` operator for filtering expressions.
- [#Q6329](https://github.com/RediSearch/RediSearch/pull/6329), [#Q6394](https://github.com/RediSearch/RediSearch/pull/6394) - Query Engine - new SVS-VAMANA vector index type which supports vector compression (optimized for Intel machines).

Bug fixes (compared to 8.2-M01)

- [#14143](https://github.com/redis/redis/pull/14143) Gracefully handle short read errors for hashes with TTL during full sync.

Performance and resource utilization improvements (compared to 8.2-M01)

- [#14103](https://github.com/redis/redis/pull/14103) Optimize `BITCOUNT` by introducing prefetching.
- [#14121](https://github.com/redis/redis/pull/14121) Optimize `SCAN` by performing expiration checks only on DBs with volatile keys.
- [#14140](https://github.com/redis/redis/pull/14140) Optimize expiry check in `scanCallback`.
- [#14131](https://github.com/redis/redis/pull/14131) Optimize `LREM`, `LPOS`, `LINSERT`, `ZRANK`, and more by caching `string2ll` results in `quicklistCompare`.
- [#14088](https://github.com/redis/redis/pull/14088) Optimize `COPY`, `RENAME`, and `RESTORE` when TTL is used.
- [#14074](https://github.com/redis/redis/pull/14074) Reduce the overhead associated with tracking `malloc`’s usable memory.
- [#13900](https://github.com/redis/redis/pull/13900) Optimize the client’s cron to avoid blocking the main thread.
- [#J1350](https://github.com/RedisJSON/RedisJSON/pull/1350) JSON - memory footprint improvement by inlining numbers (MOD-9511).

Metrics

- [#14067](https://github.com/redis/redis/pull/14067) `INFO`: `used_memory_peak_time` - time when `used_memory_peak` was hit.
- [#13990](https://github.com/redis/redis/pull/13990) `INFO`:
  - `master_current_sync_attempts` - number of times the replica attempted to sync to a master since last disconnection.
  - `master_total_sync_attempts` - number of times the replica attempted to sync to a master.
  - `master_link_up_since_seconds` - number of seconds since the link has been up.
  - `total_disconnect_time_sec` - total cumulative time the replica has been disconnected.


Redis Open Source 8.4 release notes

Summary: Redis Open Source 8.4 release notes.

Redis Open Source 8.4.2 (February 2026)

Update urgency: `SECURITY`: There are security fixes in the release.

Security fixes

- A user can manipulate data read by a connection by injecting `\r\n` sequences into a Redis error reply.

Redis Open Source 8.4.1 (February 2026)

Security fixes

- RedisTimeSeries/RedisTimeSeries[#1837](https://github.com/redistimeseries/redistimeseries/pull/1837), RedisJSON/RedisJSON[#1474](https://github.com/redisjson/redisjson/pull/1474) Hide personally identifiable information from server log.
- RedisBloom/RedisBloom[#936](https://github.com/redisbloom/redisbloom/pull/936) Cuckoo filter: crash on RDB load on 0 buckets (MOD-11593).
- RedisBloom/RedisBloom[#945](https://github.com/redisbloom/redisbloom/pull/945) Bloom filter: crash on RDB load on large number of filters (MOD-11590).

Bug fixes

- [#14637](https://github.com/redis/redis/pull/14637) Atomic slot migration: wrong adjacent slot range behavior.
- [#14567](https://github.com/redis/redis/pull/14567) Atomic slot migration: support delay trimming slots after finishing migrating slots.
- [#14746](https://github.com/redis/redis/pull/14746) `CLUSTER SLOT-STATS`: Fix a few memory tracking bugs.
- RedisTimeSeries/RedisTimeSeries[#1864](https://github.com/redistimeseries/redistimeseries/pull/1864) Atomic slot migration: time series limitations (MOD-13611).
- RediSearch/RediSearch[#6973](https://github.com/redisearch/redisearch/pull/6973) Correct empty string token counting in `byteOffset` calculations to ensure accurate text position tracking (MOD-11233).
- RediSearch/RediSearch[#6995](https://github.com/redisearch/redisearch/pull/6995) Prevent `FT.INFO` command fanout to replicas to reduce unnecessary cluster traffic.
- RediSearch/RediSearch[#7154](https://github.com/redisearch/redisearch/pull/7154) Display Background Indexing OOM warning in `FT.AGGREGATE` when memory limits are approached (MOD-11817).
- RediSearch/RediSearch[#7219](https://github.com/redisearch/redisearch/pull/7219) Resolve concurrency issue in `FT.AGGREGATE `reducer that caused intermittent errors (MOD-12243).
- RediSearch/RediSearch[#7255](https://github.com/redisearch/redisearch/pull/7255) Correct `BM25STD` underflow wraparound to prevent incorrect scoring (MOD-12223).
- RediSearch/RediSearch[#7264](https://github.com/redisearch/redisearch/pull/7264) Ensure accurate `totalDocsLen` updates to maintain correct document statistics (MOD-12234).
- RediSearch/RediSearch[#7275](https://github.com/redisearch/redisearch/pull/7275) Report used memory as `unsigned long` to prevent overflow (RED-169833).
- RediSearch/RediSearch[#7350](https://github.com/redisearch/redisearch/pull/7350) `FT.CREATE` with LeanVec parameters on non-Intel architectures (RED-176382).
- RediSearch/RediSearch[#7371](https://github.com/redisearch/redisearch/pull/7371) Validate `search-min-operation-workers` min value correctly (MOD-12383).
- RediSearch/RediSearch[#7430](https://github.com/redisearch/redisearch/pull/7430) Prevent coordinator deadlock in `FT.HYBRID` queries by avoiding index read lock (MOD-12489).
- RediSearch/RediSearch[#7435](https://github.com/redisearch/redisearch/pull/7435) Ensure full profile output on timeout with `RETURN` policy in `FT.PROFILE` (MOD-12320).
- RediSearch/RediSearch[#7446](https://github.com/redisearch/redisearch/pull/7446) Remove outdated validation from debug aggregate in cluster mode (MOD-12435).
- RediSearch/RediSearch[#7455](https://github.com/redisearch/redisearch/pull/7455) Ensure internal cursors are deleted immediately in cluster mode (MOD-12493).
- RediSearch/RediSearch[#7458](https://github.com/redisearch/redisearch/pull/7458) Correct GC regression that caused stability issues (MOD-12538).
- RediSearch/RediSearch[#7460](https://github.com/redisearch/redisearch/pull/7460) Prevent potential double-free on error path in Fork GC (MOD-12521).
- RediSearch/RediSearch[#7499](https://github.com/redisearch/redisearch/pull/7499) Propagate `HGETALL` command in HDT mode (MOD-12662).
- RediSearch/RediSearch[#7534](https://github.com/redisearch/redisearch/pull/7534) Reduce number of worker threads asynchronously to prevent performance degradation (MOD-12252, MOD-11658).
- RediSearch/RediSearch[#7553](https://github.com/redisearch/redisearch/pull/7553) Handle `WITHSCORES` correctly when `SCORE` is sent alone without extra fields in coordinator (MOD-12647).
- RediSearch/RediSearch[#7560](https://github.com/redisearch/redisearch/pull/7560) Properly handle connection closing in IO thread at shutdown and fix `searchRequestCtx` freeing on error (MOD-12699).
- RediSearch/RediSearch[#7685](https://github.com/redisearch/redisearch/pull/7685) Resolve cursor logical leak that could lead to resource exhaustion (MOD-12807).
- RediSearch/RediSearch[#7710](https://github.com/redisearch/redisearch/pull/7710) Support for `WITHCOUNT` in `FT.AGGREGATE` (MOD-11751).
- RediSearch/RediSearch[#7794](https://github.com/redisearch/redisearch/pull/7794) Correctly handle binary data with embedded nulls to prevent crashes (MOD-13010).
- RediSearch/RediSearch[#7812](https://github.com/redisearch/redisearch/pull/7812) Correct SVS GC for no-workers case (MOD-12983).
- RediSearch/RediSearch[#7815](https://github.com/redisearch/redisearch/pull/7815) Fix command routing in cluster mode by not relying on shard index (MOD-13049).
- RediSearch/RediSearch[#7823](https://github.com/redisearch/redisearch/pull/7823) Support vector blob only through parameter in `FT.HYBRID`(MOD-13123).
- RediSearch/RediSearch[#7873](https://github.com/redisearch/redisearch/pull/7873) Handle warnings in empty `FT.AGGREGATE` replies in cluster mode (MOD-12640).
- RediSearch/RediSearch[#7897](https://github.com/redisearch/redisearch/pull/7897) Remove asserts from `DownloadFile` to prevent crash (MOD-13096).
- RediSearch/RediSearch[#7901](https://github.com/redisearch/redisearch/pull/7901) Support multiple warnings in reply to prevent warning loss (MOD-13252).
- RediSearch/RediSearch[#7903](https://github.com/redisearch/redisearch/pull/7903) Eliminate memory leak in `FT.HYBRID` queries with Active-Active enabled (MOD-13143).
- RediSearch/RediSearch[#7886](https://github.com/redisearch/redisearch/pull/7886) Remove non-TEXT fields from spec's keys dictionary to prevent incorrect field handling (MOD-13150).
- RediSearch/RediSearch[#7905](https://github.com/redisearch/redisearch/pull/7905) Remove non-TEXT fields from spec's keys dictionary and refactor keys dict (MOD-13150, MOD-13151).
- RediSearch/RediSearch[#7978](https://github.com/redisearch/redisearch/pull/7978) Avoid using negative key position values during command registration (MOD-13332).
- RediSearch/RediSearch[#8052](https://github.com/redisearch/redisearch/pull/8052) Resolve incorrect results when using `LOAD *` with `FT.HYBRID` (MOD-12736, MOD-13556).
- RediSearch/RediSearch[#8083](https://github.com/redisearch/redisearch/pull/8083) Correct `FULLTEXT` field metric count accuracy (MOD-13432).
- RediSearch/RediSearch[#8089](https://github.com/redisearch/redisearch/pull/8089) Handle edge case in clusterset (MOD-13562).
- RediSearch/RediSearch[#8151](https://github.com/redisearch/redisearch/pull/8151) Correct `FT.PROFILE` shard total profile time calculation (MOD-13735, MOD-13181).
- RediSearch/RediSearch[#8153](https://github.com/redisearch/redisearch/pull/8153) Resolve config registration issue (RED-171841).
- RediSearch/RediSearch[#7449](https://github.com/redisearch/redisearch/pull/7449) Ensure `FT.HYBRID` respects timeout settings (MOD-11004).
- RediSearch/RediSearch[#7238](https://github.com/redisearch/redisearch/pull/7238) Initialize `GIL_TIME` properly for `FT.PROFILE` (MOD-12553).
- RediSearch/RediSearch[#7453](https://github.com/redisearch/redisearch/pull/7453) Error behavior on early bailout and split OOM warning for shard and coordinator (MOD-12449).
- RediSearch/RediSearch[#7615](https://github.com/redisearch/redisearch/pull/7615) Parameter `numDocs` from non-optimized wildcard iterator (MOD-12392).
- RediSearch/RediSearch[#7165](https://github.com/redisearch/redisearch/pull/7165) (Redis Enterprise only) `FT.DROPINDEX` as touches-arbitrary-keys for proper cluster handling causing crash on A-A (MOD-11090).
- RediSearch/RediSearch[#7023](https://github.com/redisearch/redisearch/pull/7023) (Redis Enterprise only) Ensure all `FT.SUG*` commands are hashslot-aware to prevent cluster routing errors (MOD-11756).

- RediSearch/RediSearch[#7496](https://github.com/redisearch/redisearch/pull/7496) Vector search performance improvements (MOD-12011, MOD-12063, MOD-12629, MOD-12346).
- RediSearch/RediSearch[#7519](https://github.com/redisearch/redisearch/pull/7519) Reduce number of worker threads asynchronously to improve resource utilization (MOD-12252, MOD-11658).
- RediSearch/RediSearch[#7694](https://github.com/redisearch/redisearch/pull/7694) Use asynchronous jobs in GC for SVS to reduce blocking (MOD-12668).
- RediSearch/RediSearch[#7730](https://github.com/redisearch/redisearch/pull/7730) Support `filter_policy` and `batch_size` parameters for vector similarity search tuning (MOD-13007, MOD-12371).
- RediSearch/RediSearch[#7782](https://github.com/redisearch/redisearch/pull/7782) Resolve SVS GC failures when worker threads are disabled (MOD-12983).
- RediSearch/RediSearch[#7572](https://github.com/redisearch/redisearch/pull/7572) Implement ASM state machine on notifications (MOD-12170).
- RediSearch/RediSearch[#7829](https://github.com/redisearch/redisearch/pull/7829) ASM-aware search flow for Active-Active deployments (MOD-12171, MOD-12169).
- RediSearch/RediSearch[#7589](https://github.com/redisearch/redisearch/pull/7589) Support multiple slot ranges in `search.CLUSTERSET` for flexible cluster topology updates (MOD-11657).
- RediSearch/RediSearch[#7862](https://github.com/redisearch/redisearch/pull/7862) Support subquery count in `FT.HYBRID` (MOD-11858, MOD-13146).
- RediSearch/RediSearch[#7893](https://github.com/redisearch/redisearch/pull/7893) Request policy support for cursor operations (MOD-13146, MOD-9573, MOD-8104).
- RediSearch/RediSearch[#8087](https://github.com/redisearch/redisearch/pull/8087) Warning when cursor may give inaccurate results due to Active-Active replication (MOD-12899).
- RediSearch/RediSearch[#7445](https://github.com/redisearch/redisearch/pull/7445) Remove outdated validation from Debug Aggregate in cluster mode (MOD-12435).
- RediSearch/RediSearch[#7384](https://github.com/redisearch/redisearch/pull/7384) Reduce index load from RDB temporary memory overhead (MOD-12212).

Metrics

- RediSearch/RediSearch[#7960](https://github.com/redisearch/redisearch/pull/7960) Persist query warnings across cursor reads (MOD-12984).
- RediSearch/RediSearch[#7612](https://github.com/redisearch/redisearch/pull/7612) Track `maxprefixexpansions` errors and warnings in info (MOD-12417).
- RediSearch/RediSearch[#7872](https://github.com/redisearch/redisearch/pull/7872) Handle warnings in empty `FT.AGGREGATE` replies in cluster mode (MOD-12640).
- RediSearch/RediSearch[#7900](https://github.com/redisearch/redisearch/pull/7900) Support multiple warnings in reply (MOD-13252).
- RediSearch/RediSearch[#7576](https://github.com/redisearch/redisearch/pull/7576) Track OOM errors and warnings in info (MOD-12418).
- RediSearch/RediSearch[#7507](https://github.com/redisearch/redisearch/pull/7507) Track timeout errors and warnings in info (MOD-12419).
- RediSearch/RediSearch[#7341](https://github.com/redisearch/redisearch/pull/7341) Rename `FT.PROFILE` counter fields for clarity .(MOD-6056)
- RediSearch/RediSearch[#7436](https://github.com/redisearch/redisearch/pull/7436), RediSearch/RediSearch[#7427](https://github.com/redisearch/redisearch/pull/7427) Enhance `FT.PROFILE` with vector search execution details (MOD-12263).
- RediSearch/RediSearch[#7573](https://github.com/redisearch/redisearch/pull/7573) Debug support for `FT.PROFILE` command (MOD-12627).
- RediSearch/RediSearch[#7736](https://github.com/redisearch/redisearch/pull/7736) Add `Internal cursor reads` metric to cluster `FT.PROFILE` output (MOD-12414).
- RediSearch/RediSearch[#7692](https://github.com/redisearch/redisearch/pull/7692) Declare query error struct on `_FT.CURSOR PROFILE` (MOD-12955).
- RediSearch/RediSearch[#7848](https://github.com/redisearch/redisearch/pull/7848) Store and display shard ID in profile output (MOD-12321).
- RediSearch/RediSearch[#7422](https://github.com/redisearch/redisearch/pull/7422) Track syntax and argument errors in query error metrics (MOD-12416).
- RediSearch/RediSearch[#7552](https://github.com/redisearch/redisearch/pull/7552) Add `active_io_threads` metric (MOD-12069, MOD-12695).
- RediSearch/RediSearch[#7622](https://github.com/redisearch/redisearch/pull/7622) Add `active_coord_threads` metric (MOD-12694, MOD-12069).
- RediSearch/RediSearch[#7564](https://github.com/redisearch/redisearch/pull/7564) Add `active_worker_threads` metric (MOD-12694, MOD-12069).
- RediSearch/RediSearch[#7626](https://github.com/redisearch/redisearch/pull/7626) Add `*_pending_jobs` metrics for job queues (MOD-12069).
- RediSearch/RediSearch[#7658](https://github.com/redisearch/redisearch/pull/7658) Add pending workers admin jobs metric (MOD-12069, MOD-12791).
- RediSearch/RediSearch[#7731](https://github.com/redisearch/redisearch/pull/7731) Add `active_topology_update_threads` metric (MOD-12069, MOD-12790).
- RediSearch/RediSearch[#7760](https://github.com/redisearch/redisearch/pull/7760) Extend indexing metrics for more detailed performance data (MOD-12070).

Configuration parameters

- RediSearch/RediSearch[#7083](https://github.com/redisearch/redisearch/pull/7083) Add default scorer configuration option (MOD-10037).

Redis Open Source 8.4.0 (November 2025)

This is the General Availability (GA) release of Redis 8.4 in Redis Open Source.

Major changes compared to Redis 8.2

- `DIGEST`, `DELEX`; `SET` extensions - atomic compare-and-set and compare-and-delete for string keys
- `MSETEX` - atomically set multiple string keys and update their expiration
- `XREADGROUP` - new `CLAIM` option for reading both idle pending and incoming stream entries
- `CLUSTER MIGRATION` - atomic slot migration
- `CLUSTER SLOT-STATS` - per-slot usage metrics: key count, CPU time, and network I/O
- Redis query engine: `FT.HYBRID` - hybrid search and fused scoring
- Redis query engine: I/O threading with performance boost for search and query commands (`FT.*`)
- I/O threading: substantial throughput increase (e.g. >30% for caching use cases (10% `SET`, 90% `GET`), 4 cores)
- JSON: substantial memory reduction for homogenous arrays (up to 91%)

Binary distributions

- Alpine and Debian Docker images - https://hub.docker.com/_/redis
- Install using snap - see https://github.com/redis/redis-snap
- Install using brew - see https://github.com/redis/homebrew-redis
- Install using RPM - see https://github.com/redis/redis-rpm
- Install using Debian APT - see https://github.com/redis/redis-debian

Redis 8.4 was tested on the following operating systems

- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat)
- Rocky Linux 8.10, 9.5
- AlmaLinux 8.10, 9.5
- Debian 12 (Bookworm), Debian 13 (Trixie)
- macOS 13 (Ventura), 14 (Sonoma), 15 (Sequoia)

Bug fixes (compared to 8.4-RC1)

- [#14524](https://github.com/redis/redis/pull/14524) `XREADGROUP CLAIM` returns strings instead of integers
- [#14529](https://github.com/redis/redis/pull/14529) Add variable key-spec flags to `SET IF*` and `DELEX`
- #P928 Potential memory leak (MOD-11484)
- #T1801, #T1805 macOS build failures (MOD-12293)
- #J1438 `JSON.NUMINCRBY` - wrong result on integer array with non-integer increment (MOD-12282)
- #J1437 Thread safety issue related to ASM and shared strings (MOD-12013)

Performance and resource utilization improvements (compared to 8.4-RC1)

- [#14480](https://github.com/redis/redis/pull/14480), [#14516](https://github.com/redis/redis/pull/14516) Optimize `XREADGROUP`

Known bugs and limitations

- When executing `FT.SEARCH`, `FT.AGGREGATE`, `FT.CURSOR`, `FT.HYBRID`, `TS.MGET`, `TS.MRANGE`, `TS.MREVRANGE` and `TS.QUERYINDEX` while an atomic slot migration process is in progress, the results may be partial or contain duplicates.
- `FT.PROFILE`, `FT.EXPLAIN` and `FT.EXPLACINCLI` do not contain the `FT.HYBRID` option.
- Metrics from `FT.HYBRID` command aren’t displayed on `FT.INFO` and `INFO`.
- Option `EXPLAINSCORE`, `SHARD_K_RATIO`, `YIELD_DISTANCE_AS` and `WITHCURSOR` with `FT.HYBRID` are not available.
- Post-filtering (after `COMBINE` step) using FILTER is not available.
- Currently the default response format considers only `key_id` and `score`, this may change for delivering entire document content.

Redis Open Source 8.4-RC1 (November 2025)

This is the first Release Candidate of Redis 8.4 in Redis Open Source.

Release Candidates are feature-complete pre-releases. Pre-releases are not suitable for production use.

Binary distributions

New Features (compared to 8.2.3)

- [#14414](https://github.com/redis/redis/pull/14414) New command: `CLUSTER MIGRATION` - atomic slot migration.
- [#14435](https://github.com/redis/redis/pull/14435) New commands: `DELEX` and `DIGEST`; `SET` extensions - atomic compare-and-set and compare-and-delete for string keys.
- [#14434](https://github.com/redis/redis/pull/14434) New command: `MSETEX` - set multiple keys and update their expiration.
- [#14402](https://github.com/redis/redis/pull/14402) `XREADGROUP` - add `CLAIM min-idle-time` to consume both idle pending entries and incoming entries.
- [#14058](https://github.com/redis/redis/pull/14058) Add auto-repair options for broken AOF tail on startup.
- [#14296](https://github.com/redis/redis/pull/14296) Support decoding JSON empty array as a Lua array.
- RedisTimeSeries/RedisTimeSeries[#1773](https://github.com/redistimeseries/redistimeseries/pull/1773) `HELP` and `COMMAND DOCS` now support time series commands (MOD-8133).
- RedisBloom/RedisBloom[#892](https://github.com/redisbloom/redisbloom/pull/892) `HELP` and `COMMAND DOCS` now support probabilistic commands (MOD-8133).
- RediSearch/RediSearch[#7076](https://github.com/redisearch/redisearch/pull/7076), RediSearch/RediSearch[#6857](https://github.com/redisearch/redisearch/pull/6857) New Command: `FT.HYBRID` - hybrid queries with RRF and LINEAR combination.
- RediSearch/RediSearch[#7022](https://github.com/redisearch/redisearch/pull/7022) Support index updates when atomic slot migrations occur.
- RediSearch/RediSearch[#6313](https://github.com/redisearch/redisearch/pull/6313) Support multiple I/O threads for Redis Search cluster manager - Coordinator (MOD-10562).

Bug fixes (compared to 8.2.3)

- [#14423](https://github.com/redis/redis/pull/14423) Potential infinite loop when a stream is corrupted.
- [#14420](https://github.com/redis/redis/pull/14420) Shutdown blocked client not being properly reset after shutdown cancellation.
- [#14417](https://github.com/redis/redis/pull/14417) `CLUSTER FORGET` - heap-buffer-overflow.
- [#14415](https://github.com/redis/redis/pull/14415) Potential crash in `lookupKey()` when `executing_client` is NULL.
- RedisTimeSeries/RedisTimeSeries[#1776](https://github.com/redistimeseries/redistimeseries/pull/1776) Potential crash on `TS.RANGE` with `ALIGN +`, `AGGREGATION twa` and `EMPTY` (MOD-11620, MOD-10484).

Performance and resource utilization improvements (compared to 8.2.3)

- [#14440](https://github.com/redis/redis/pull/14440) Lookahead prefetching - parse multiple commands in advance through a lookahead pipeline.
- [#14309](https://github.com/redis/redis/pull/14309) Optimize `BITCOUNT` with AVX2 and AVX512 popcount implementations.
- [#14227](https://github.com/redis/redis/pull/14227) Optimize `BITCOUNT` with Arm Neon SIMD vectorization.
- [#14428](https://github.com/redis/redis/pull/14428) Optimize HyperLogLog with branchless comparisons and Arm Neon SIMD vectorization.
- [#14222](https://github.com/redis/redis/pull/14222) Optimize Vector set `VADD` and `VSIM` with AVX2 and AVX512 dot product implementations.
- RedisJSON/ijson[#9](https://github.com/redisjson/redisjson/pull/9) JSON - memory footprint improvement by using homogeneous arrays (MOD-9511).
- RedisJSON/ijson[#7](https://github.com/redisjson/redisjson/pull/7) JSON - memory footprint improvement by inlining short strings (MOD-9511).

Configuration parameters

- [#14058](https://github.com/redis/redis/pull/14058) `aof-load-corrupt-tail-max-size` - maximum corrupted tail size (in bytes) to attempt to repair automatically.
- [#14296](https://github.com/redis/redis/pull/14296) `decode_array_with_array_mt` - Lua: control how empty JSON arrays are handled.
- [#14440](https://github.com/redis/redis/pull/14440) `lookahead` - runtime-configurable lookahead depth (default: 16).
- RediSearch/RediSearch[#7065](https://github.com/redisearch/redisearch/pull/7065) `search-default-scorer` - default text and tag scorer (new default is BM25STD).
- RediSearch/RediSearch[#6769](https://github.com/redisearch/redisearch/pull/6769) `search-on-oom` - behavior when OOM event occurs in the query time, supports 3 values:
  - `IGNORE` - queries run despite OOM, not recommended for heavy result sets (current behaviour).
  - `FAIL` - query execution fails if any node is in OOM state at start.
  - `RETURN` - returns partial results if OOM is detected in only some cluster nodes (default).
- RediSearch/RediSearch[#6313](https://github.com/redisearch/redisearch/pull/6313) `search-io-threads` - allow setting the comms threads used by the cluster manager - coordinator (default: 20).

Known bugs and limitations

- When executing `FT.SEARCH`, `FT.AGGREGATE`, `FT.CURSOR`, `FT.HYBRID`, `TS.MGET`, `TS.MRANGE`, `TS.MREVRANGE` and `TS.QUERYINDEX` while an atomic slot migration process is in progress, the results may be partial or contain duplicates.
- `FT.PROFILE`, `FT.EXPLAIN` and `FT.EXPLACINCLI` don’t contain the `FT.HYBRID` option.
- Metrics from `FT.HYBRID` command aren’t displayed on `FT.INFO` and `INFO`.
- Option `EXPLAINSCORE`, `SHARD_K_RATIO`, `YIELD_DISTANCE_AS`, and `WITHCURSOR` with `FT.HYBRID` are not available
- Post-filtering (after `COMBINE` step) using FILTER is not available.
- Currently, the default response format considers only `key_id` and `score`, this may change for delivering the entire document content.


Redis Open Source 8.6 release notes

Summary: Redis Open Source 8.6 release notes.

Redis Open Source 8.6.2 (March 2026)

Update urgency: `SECURITY`: There are security fixes in the release.

Security fixes

- [#14824](https://github.com/redis/redis/pull/14824) Potential UAF: don't use reply copy avoidance for module strings.

Bug fixes

- [#14848](https://github.com/redis/redis/pull/14848) Crash during command processing on replicas performing full synchronization.
- [#14794](https://github.com/redis/redis/pull/14794) New `XIDMPRECORD` internal command and AOFRW emission to restore stream IDMP state.
- [#14816](https://github.com/redis/redis/pull/14816) `setModuleEnumConfig()` passing prefixed name to module callbacks.
- [#14858](https://github.com/redis/redis/pull/14858) Streams: Ensures `XADD` with `IDMP`/`IDMPAUTO` that hits an existing IID records the metadata change.
- [#14855](https://github.com/redis/redis/pull/14855), [#14831](https://github.com/redis/redis/pull/14831), [#14817](https://github.com/redis/redis/pull/14817) Potential Memory leaks.
- [#14869](https://github.com/redis/redis/pull/14869) Streams: IDMP cron expiration not working after RDB load.
- [#14847](https://github.com/redis/redis/pull/14847) Potential crash during ACL checks on wrong-arity commands.
- [#14883](https://github.com/redis/redis/pull/14883) `HSETEX` and `HGETEX` do not validate that `FIELDS` is specified only once.
- [#14897](https://github.com/redis/redis/pull/14897) Streams: IDMP-related bugs.

Redis Open Source 8.6.1 (February 2026)

Security fixes

- A user can manipulate data read by a connection by injecting `\r\n` sequences into a Redis error reply.

Bug fixes

- [#14785](https://github.com/redis/redis/pull/14785) `HOTKEYS`: The `INFO` command may display module information, and the missing `HOTKEYS HELP` subcommand has been added.
- [#14789](https://github.com/redis/redis/pull/14789) Bug in RDB loading prevented hash table expansion, increasing load time.

Redis Open Source 8.6.0 (February 2026)

This is the General Availability release of Redis 8.6 in Redis Open Source.

Major changes compared to 8.4

- Substantial performance improvements.
- Substantial memory reduction for hashes (hashtable-encoded) and sorted sets (skiplist-encoded).
- Streams: `XADD` idempotency (at-most-once guarantee) with new `IDMPAUTO` and `IDMP` arguments.
- New eviction policies - least recently modified: `volatile-lrm` and `allkeys-lrm`.
- Hot keys detection and reporting; new command: `HOTKEYS`.
- TLS certificate-based automatic client authentication.
- Time series: support NaN values; new aggregators: `COUNTNAN` and `COUNTALL`.

Binary distributions

- Alpine and Debian Docker images - https://hub.docker.com/_/redis
- Install using snap - see https://github.com/redis/redis-snap
- Install using brew - see https://github.com/redis/homebrew-redis
- Install using RPM - see https://github.com/redis/redis-rpm
- Install using Debian APT - see https://github.com/redis/redis-debian

Operating systems we test Redis 8.6 on

- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat)
- Rocky Linux 8.10, 9.5
- AlmaLinux 8.10, 9.5, 10.1
- Debian 12 (Bookworm), Debian 13 (Trixie)
- macOS 14 (Sonoma), 15 (Sequoia)

New Features (compared to 8.6-RC1)

- [#14695](https://github.com/redis/redis/pull/14695) Keys memory size histograms.

Performance and resource utilization improvements (compared to 8.6-RC1)

- [#14714](https://github.com/redis/redis/pull/14714) Optimize user ACL permission verification.
- [#14692](https://github.com/redis/redis/pull/14692) Optimize peak memory metric collection.
- [#14739](https://github.com/redis/redis/pull/14739) Avoid allocating and releasing list node in reply copy avoidance.
- [#14713](https://github.com/redis/redis/pull/14713) Reduce per command syscalls by reusing cached time when hardware monotonic clock is available.
- [#14726](https://github.com/redis/redis/pull/14726) Optimize `XREADGROUP CLAIM`.
- [#13962](https://github.com/redis/redis/pull/13962) Vector set: replace manual popcount with __builtin_popcountll for binary vector distance (Intel, AMD, ARM).
- [#14474](https://github.com/redis/redis/pull/14474) Vector set: vectorized the quantized 8-bit vector distance calculation (Intel, AMD).
- [#14492](https://github.com/redis/redis/pull/14492) Vector set: vectorize binary quantization path for vectorsets distance calculation (Intel, AMD).

Configuration parameters

- [#14719](https://github.com/redis/redis/pull/14719) `cluster-slot-stats-enabled` - per-slot resource consumptions statistics to collect.
- [#14695](https://github.com/redis/redis/pull/14695) `key-memory-histograms` collect memory consumption histograms per data type.

Metrics

- [#14695](https://github.com/redis/redis/pull/14695) `db0_distrib_lists_sizes`, `db0_distrib_sets_sizes`, `db0_distrib_hashes_sizes`, `db0_distrib_zsets_sizes`.

Known bugs and limitations

- Streams: avoid using `XADD` with the new `IDMP` or `IDMPAUTO` options when using `appendonly yes` with `aof-use-rdb-preamble no` (non default).
  This limitation will be removed in the next patch.

Redis Open Source 8.6-RC1 (January 2026)

This is the first Release Candidate of Redis 8.6 in Redis Open Source.

Release Candidates are feature-complete pre-releases. Pre-releases are not suitable for production use.

Binary distributions

Operating systems we test Redis 8.6 on

- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat)
- Rocky Linux 8.10, 9.5, 10.1
- AlmaLinux 8.10, 9.5, 10.1
- Debian 12 (Bookworm), Debian 13 (Trixie)
- 14 (Sonoma), 15 (Sequoia)

New Features (compared to 8.4.0)

- [#14615](https://github.com/redis/redis/pull/14615) Streams: `XADD` idempotency (at-most-once guarantee) with new `IDMPAUTO` and `IDMP` arguments.
- [#14624](https://github.com/redis/redis/pull/14624) New eviction policies - least recently modified: `volatile-lrm` and `allkeys-lrm`.
- [#14680](https://github.com/redis/redis/pull/14680) Hot keys detection and reporting; new command: `HOTKEYS`.
- [#14610](https://github.com/redis/redis/pull/14610) TLS certificate-based automatic client authentication.
- RedisTimeSeries/RedisTimeSeries[#1853](https://github.com/redistimeseries/redistimeseries/pull/1853) Time series: support NaN values; new aggregators: `COUNTNAN` and `COUNTALL`.

Security and privacy fixes

- [#14645](https://github.com/redis/redis/pull/14645) Hide personally identifiable information from ACL log.
- [#14659](https://github.com/redis/redis/pull/14659) ACL: Key-pattern bypass in `MSETEX`.
- RedisTimeSeries/RedisTimeSeries[#1837](https://github.com/redistimeseries/redistimeseries/pull/1837), RedisJSON/RedisJSON[#1474](https://github.com/redisjson/redisjson/pull/1474) Hide personally identifiable information from server log.
- RedisBloom/RedisBloom[#950](https://github.com/redisbloom/redisbloom/pull/950) Out-of-bounds read when loading an invalid RDB file (MOD-12802).

Bug fixes (compared to 8.4.0)

- [#14545](https://github.com/redis/redis/pull/14545) ACL: AOF loading fails if ACL rules are changed and don't allow some commands in `MULTI`-`EXEC`.
- [#14637](https://github.com/redis/redis/pull/14637) Atomic slot migration: wrong adjacent slot range behavior.
- [#14567](https://github.com/redis/redis/pull/14567) Atomic slot migration: support delay trimming slots after finishing migrating slots.
- [#14623](https://github.com/redis/redis/pull/14623) Streams: `XTRIM`/`XADD` with approx mode (`~`) don’t delete entries for `DELREF`/`ACKED` strategies.
- [#14552](https://github.com/redis/redis/pull/14552) Streams: Incorrect behavior when using `XDELEX...ACKED` after `XGROUP DESTROY`.
- [#14537](https://github.com/redis/redis/pull/14537) `SCAN`: restore original filter order (revert change introduced in 8.2).
- [#14581](https://github.com/redis/redis/pull/14581) Rare server hang at shutdown.
- [#14597](https://github.com/redis/redis/pull/14597) Panic when cluster node is uninitialized.
- [#14583](https://github.com/redis/redis/pull/14583) `FLUSHALL ASYNC` on a writable replica may block the main thread for an extended period.
- [#14504](https://github.com/redis/redis/pull/14504) Cluster: fix race condition in broadcast configuration.
- [#14416](https://github.com/redis/redis/pull/14416) Fixed argument position handling in Redis APIs.
- RedisTimeSeries/RedisTimeSeries[#1784](https://github.com/redistimeseries/redistimeseries/pull/1784), RedisTimeSeries/RedisTimeSeries[#1839](https://github.com/redistimeseries/redistimeseries/pull/1839), RedisBloom/RedisBloom[#952](https://github.com/redisbloom/redisbloom/pull/952), RedisJSON/RedisJSON[#1477](https://github.com/redisjson/redisjson/pull/1477) Atomic slot migration support.
- RedisBloom/RedisBloom[#946](https://github.com/redisbloom/redisbloom/pull/946) `MEMORY USAGE`: fix reported value (MOD-12799).
- RedisJSON/RedisJSON[#1473](https://github.com/redisjson/redisjson/pull/1473) Adding escapes to already-escaped characters (MOD-8137).
- RedisJSON/RedisJSON[#1475](https://github.com/redisjson/redisjson/pull/1475) `JSON.CLEAR` does not error if more than one path is specified (MOD-13109).

Performance and resource utilization improvements (compared to 8.4.0)

- [#14608](https://github.com/redis/redis/pull/14608) Reply copy-avoidance path to reduce memory copies for bulk string replies.
- [#14595](https://github.com/redis/redis/pull/14595) Hash: unify field name and value into a single struct.
- [#14701](https://github.com/redis/redis/pull/14701) Sorted set: unify score and value into a single struct.
- [#14662](https://github.com/redis/redis/pull/14662) Optimize listpack iterator on hash fields.
- [#14699](https://github.com/redis/redis/pull/14699) Optimize set commands with expiration.
- [#14700](https://github.com/redis/redis/pull/14700) Optimize prefetching.
- [#14715](https://github.com/redis/redis/pull/14715) Optimize prefetch sizing logic.
- [#14636](https://github.com/redis/redis/pull/14636) Optimize `ZRANK`.
- [#14676](https://github.com/redis/redis/pull/14676) Utilize hardware clock by default on ARM AArch64.
- [#14575](https://github.com/redis/redis/pull/14575) Disable RDB compression when diskless replication is used.

Modules API

- [#14445](https://github.com/redis/redis/pull/14445)
  - `RM_CreateKeyMetaClass` - define a new key-metadata class.
  - `RM_ReleaseKeyMetaClass` - release a key-metadata class.
  - `RM_SetKeyMeta` - attach or update a metadata value for a key under a specific metadata-key class.
  - `RM_GetKeyMeta` - get a metadata value for a key under a specific metadata-key class.

Configuration parameters

- [#14624](https://github.com/redis/redis/pull/14624) `maxmemory-policy`: new eviction policies: `volatile-lrm`, `allkeys-lrm`.
- [#14615](https://github.com/redis/redis/pull/14615) `stream-idmp-duration`, `stream-idmp-maxsize` - defaults for streams idempotent production.
- [#14610](https://github.com/redis/redis/pull/14610) `tls-auth-clients-user` TLS certificate-based automatic client authentication.
- [#14596](https://github.com/redis/redis/pull/14596) `flushdb` option for `repl-diskless-load`: always flush the entire dataset before diskless load.

Metrics

- [#14610](https://github.com/redis/redis/pull/14610) `acl_access_denied_tls_cert` - failed TLS certificate–based authentication attempts.

Known bugs and limitations

- Redis Search: In case of load rebalancing operations (such as Atomic Slot Migration) taking place during the lifetime of a cursor, there is a chance that some results may be missing.


RediSearch release notes

Summary: RediSearch release notes for version 2.10 and earlier

Summary: New vector data types. Enhanced indexing capabilities. Simplified query syntax. Expanded geospatial search.

RediSearch 2.10 release notes

Summary: RESP3 support. Geo Polygon Search. Performance improvements.

RediSearch 2.8 release notes

Summary: Search using wildcard queries for TEXT and TAG fields, multi-value indexing and querying of attributes for any attribute type, and indexing double-precision floating-point vectors and range queries from a given vector.

RediSearch 2.6 release notes

Summary: Vector Similarity Search (VSS). New query syntax Dialect version 2. Choose between Dialect 1 and Dialect 2 for query parser behavior. Hybrid queries.

RediSearch 2.4 release notes

Summary: Search and index JSON documents. Profiling queries. Field aliasing.

RediSearch 2.2 release notes

Summary: Automatically indexes data based on a key pattern. Scale a single index over multiple Redis shards. Improved query performance.

RediSearch 2.0 release notes

Summary: Improved performance of full-text search and aggregation queries. Support for aliasing of indices. Added a C API to embed RediSearch in other modules. Forked process garbage collection.

RediSearch 1.6 release notes

Summary: Conditional updates. Schema modification. Query spelling correction. Phonetic matching. More fuzziness in search. Retrieve and change runtime configuration. Unlimited autocomplete results.

RediSearch 1.4 release notes

Summary: Aggregation filters. Query attributes. Fuzzy matching. Conditional updates. Backslash escaping. Synonyms support.

RediSearch 1.2 release notes

Summary: Aggregations engine.

RediSearch 1.1 release notes

Summary: Hamming distance scoring. Wildcard queries. Optional deletion of documents in FT.DEL. Optionally keep document hashes in FT.DROP. Delete geo-sets when dropping an index. Tag prefix completion support.

RediSearch 1.0 release notes

Content


RediSearch 1.0 release notes

Requirements

RediSearch v1.0.10 requires:

- Minimum Redis compatibility version (database): 4.0.0
- Minimum Redis Enterprise Software version (cluster): 5.0.0

RediSearch 1.0.10 (April 2018)

This is a bug-fix release with some stability fixes, a few processing bug fixes, and a few small additions:

Fixes

- Fixed false positives in NOT iterator (5fe948e)

- Prevent crashing with uninitialized sorting vectors (96f2473)

- Fixed overflow bug in triemap, and limited tag length to 4KB (09e682f)

- Fixed false positives in intersects and negative intersects (4998772)

- Fixed bug in union of id lists (b8e74ef3)

New features

- Added support for tag prefix completions (137b346)

RediSearch 1.0.9 (March 2018)

This is a maintenance release from the 1.0 branch, that does not yet contain the aggregation engine that's already in master. It includes a few small fixes and API additions that were backported from master.

Changes

#### 1. Hamming distance scoring

RediSearch can now sort the search result by the inverse Hamming Distance between document payloads and the query payloads (provided they are both the same length). This can be used as a nearest neighbor search ranking when a feature vector is encoded as a bitmap and the distance metric is Hamming distance.

#### 2. Wildcard queries

It's now possible to search for just `*`, scanning all the documents in the index. This is useful in conjunction with the Hamming Distance scorer.

#### 3. Optional deletion of documents in FT.DEL

Up until now, FT.DEL did not delete the Hash key containing the actual document. As of this version, you can call it with an optional DD (Delete Document) argument, and it will also delete the document.

For example: `FT.DEL myIndex myDoc DD`.

#### 4. Optionally keep document hashes in FT.DROP

Up until now, FT.DROP always deleted the document Hash keys. As of this version, you can specify the `KEEPDOCS` argument to FT.DROP and it will not touch them.

#### 5. Delete geo-sets when dropping an index

Until now we did not delete the geo-set keys where documents were geographically indexed. This version fixes this (#[295](https://github.com/RediSearch/RediSearch/issues/295))


RediSearch 1.1 release notes

Summary: Aggregations engine.

Requirements

RediSearch v1.1.0 requires:

- Minimum Redis compatibility version (database): 4.0.0
- Minimum Redis Enterprise Software version (cluster): 5.0.0

RediSearch 1.1.0 (April 2018)

This is a major version (we almost named it 2.0), which includes months of work, mostly on the brand new aggregations engine.

Aggregations

Aggregations are a way to process the results of a search query, group, sort and transform them - and extract analytic insights from them. Much like aggregation queries in other databases and search engines, they can be used to create analytics report, or to perform Faceted Search style queries.

#### Example aggregation request

For example, indexing a web-server's logs, we can create report for unique users by hour. Suppose our schema includes the **SORTABLE** fields `timestamp` (Unix-timestamp) and `userId`:

[code example]

See [the full documentation on aggregations for more details](http://redisearch.io/Aggregations/)

Bug fixes over 1.0.10

- Fixed #[313](https://github.com/RediSearch/RediSearch/issues/313) - removed -mpopcnt compile flag.

- Fixed #[312](https://github.com/RediSearch/RediSearch/issues/312) - crash on highlighting

FT.AGGREGATE idx "*"
   APPLY hour(@timestamp) AS hour
   GROUPBY 1 @hour
      REDUCE COUNT_DISTINCT 1 @userId AS unique_users
   SORTBY 2 @hour ASC


RediSearch 1.2 release notes

Requirements

RediSearch v1.2.0 requires:

- Minimum Redis compatibility version (database): 4.0.0
- Minimum Redis Enterprise Software version (cluster): 5.0.0

RediSearch 1.2.0 (June 2018)

This version is the last version that I (@dvirsky) will be releasing, and it includes a lot of new cool features, and actually NO bug-fixes over 1.1.0! So long and thanks for all the fish!

New features

#### Aggregation filters

As an addition to the aggregation API in `FT.AGGREGATE`, it is possible to do post-index filtering of the pipeline, using the `FILTER` keyword. e.g.:

[code example]

See [http://redisearch.io/Aggregations/](http://redisearch.io/Aggregations/) for more details.

#### Query attributes

It is now possible to apply specific query modifying attributes to specific clauses of the query (see #[212](https://github.com/RediSearch/RediSearch/issues/212)).

The syntax is `(foo bar) => { $attribute: value; $attribute:value; ...}`, e.g:

[code example]

The supported attributes are:

1. $weight: determines the weight of the sub-query or token in the overall ranking on the result.
1. $slop: determines the maximum allowed "slop" (space between terms) in the query clause.
1. $inorder: whether or not the terms in a query clause must appear in the same order as in the query.

#### Fuzzy matching

Wrapping a search term with `%` will cause the index to expand the query to terms that are within an Edit Distance of 1 from the original term. For example, querying for `%redis%` will expand it to query for `redis, jedis, credis, predis`, etc (provided the terms appear in documents in the index).

Notice that each query term needs to be wrapped independently, and that we limit the maximum amount of expansions to 200 per term, as this hurts performance significantly.

#### Conditional updates

It is now possible to update documents (`FT.ADD ... REPLACE [PARTIAL]`) only if a certain condition is met regarding the document's state **before** the updates. So for example, if our document has a timestamp field, and we would like to update its title only if the timestamp is below a certain value, we can do the following:

[code example]

#### Backslash escaping

Following several user requests, it is now possible to escape separator characters in documents (it is already done in the query itself), and avoid tokenization when needed.

For example, indexing the text `hello\-world hello world` will create the tokenization `["hello-world", "hello", "world"]`. Notice that in most languages and in redis-cli, you will need to escape the backslash itself, so instead of `hello\-world` you will need to send the string `hello\\-world`.

The same goes to the query string: If the document contains the token `hello-world`, it can be found by running in redis-cli: `FT.SEARCH idx "hello\\-world", which will cause the query not to be separated.

#### Synonyms support

It is now possible to provide the index with synonym groups (.e.g boy, child, kid), and have it automatically index synonymous terms so that searching for one will return documents containing another.

See [http://redisearch.io/Synonyms/](http://redisearch.io/Synonyms/) for more details and examples.

FT.AGGREGATE idx "*"
   GROUPBY 1 @foo
     REDUCE count 0 AS num
   FILTER "@num < 100"

(foo bar) => { $weight: 2.0; $slop: 1 }
~(bar baz) => { $weight: 0.5; }

FT.ADD myIndex myDoc 1.0
   REPLACE PARTIAL
   IF "@timestamp < 12313134523"
   FIELDS
       title "new title"