|
| 1 | +--- |
| 2 | +Title: Redis Open Source 8.4 release notes |
| 3 | +alwaysopen: false |
| 4 | +categories: |
| 5 | +- docs |
| 6 | +- operate |
| 7 | +- stack |
| 8 | +description: Redis Open Source 8.4 release notes. |
| 9 | +linkTitle: v8.4.0 (November 2025) |
| 10 | +min-version-db: blah |
| 11 | +min-version-rs: blah |
| 12 | +weight: 15 |
| 13 | +--- |
| 14 | + |
| 15 | +## Redis Open Source 8.4-RC1 (November 2025) |
| 16 | + |
| 17 | +This is the first Release Candidate of Redis 8.4 in Redis Open Source. |
| 18 | + |
| 19 | +Release Candidates are feature-complete pre-releases. Pre-releases are not suitable for production use. |
| 20 | + |
| 21 | +### Binary distributions |
| 22 | + |
| 23 | +- Alpine and Debian Docker images - https://hub.docker.com/_/redis |
| 24 | +- Install using snap - see https://github.com/redis/redis-snap |
| 25 | +- Install using brew - see https://github.com/redis/homebrew-redis |
| 26 | +- Install using RPM - see https://github.com/redis/redis-rpm |
| 27 | +- Install using Debian APT - see https://github.com/redis/redis-debian |
| 28 | + |
| 29 | +### Redis 8.4 was tested on the following operating systems |
| 30 | + |
| 31 | +- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat) |
| 32 | +- Rocky Linux 8.10, 9.5 |
| 33 | +- AlmaLinux 8.10, 9.5 |
| 34 | +- Debian 12 (Bookworm), Debian 13 (Trixie) |
| 35 | +- macOS 13 (Ventura), 14 (Sonoma), 15 (Sequoia) |
| 36 | + |
| 37 | +### New Features (compared to 8.2.3) |
| 38 | + |
| 39 | +- [#14414](https://github.com/redis/redis/pull/14414) New command: `CLUSTER MIGRATION` - atomic slot migration. |
| 40 | +- [#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. |
| 41 | +- [#14434](https://github.com/redis/redis/pull/14434) New command: `MSETEX` - set multiple keys and update their expiration. |
| 42 | +- [#14402](https://github.com/redis/redis/pull/14402) `XREADGROUP` - add `CLAIM min-idle-time` to consume both idle pending entries and incoming entries. |
| 43 | +- [#14058](https://github.com/redis/redis/pull/14058) Add auto-repair options for broken AOF tail on startup. |
| 44 | +- [#14296](https://github.com/redis/redis/pull/14296) Support decoding JSON empty array as a Lua array. |
| 45 | +- RedisTimeSeries/RedisTimeSeries[#1773](https://github.com/redistimeseries/redistimeseries/pull/1773) `HELP` and `COMMAND DOCS` now support time series commands (MOD-8133). |
| 46 | +- RedisBloom/RedisBloom[#892](https://github.com/redisbloom/redisbloom/pull/892) `HELP` and `COMMAND DOCS` now support probabilistic commands (MOD-8133). |
| 47 | +- 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. |
| 48 | +- RediSearch/RediSearch[#7022](https://github.com/redisearch/redisearch/pull/7022) Support index updates when atomic slot migrations occur. |
| 49 | +- RediSearch/RediSearch[#6313](https://github.com/redisearch/redisearch/pull/6313) Support multiple I/O threads for RQE cluster manager - Coordinator (MOD-10562). |
| 50 | + |
| 51 | +### Bug fixes (compared to 8.2.3) |
| 52 | + |
| 53 | +- [#14423](https://github.com/redis/redis/pull/14423) Potential infinite loop when a stream is corrupted. |
| 54 | +- [#14420](https://github.com/redis/redis/pull/14420) Shutdown blocked client not being properly reset after shutdown cancellation. |
| 55 | +- [#14417](https://github.com/redis/redis/pull/14417) `CLUSTER FORGET` - heap-buffer-overflow. |
| 56 | +- [#14415](https://github.com/redis/redis/pull/14415) Potential crash in `lookupKey()` when `executing_client` is NULL. |
| 57 | +- 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). |
| 58 | + |
| 59 | +### Performance and resource utilization improvements (compared to 8.2.3) |
| 60 | + |
| 61 | +- [#14440](https://github.com/redis/redis/pull/14440) Lookahead prefetching - parse multiple commands in advance through a lookahead pipeline. |
| 62 | +- [#14309](https://github.com/redis/redis/pull/14309) Optimize `BITCOUNT` with AVX2 and AVX512 popcount implementations. |
| 63 | +- [#14227](https://github.com/redis/redis/pull/14227) Optimize `BITCOUNT` with Arm Neon SIMD vectorization. |
| 64 | +- [#14428](https://github.com/redis/redis/pull/14428) Optimize HyperLogLog with branchless comparisons and Arm Neon SIMD vectorization. |
| 65 | +- [#14222](https://github.com/redis/redis/pull/14222) Optimize Vector set `VADD` and `VSIM` with AVX2 and AVX512 dot product implementations. |
| 66 | +- RedisJSON/ijson[#9](https://github.com/redisjson/redisjson/pull/9) JSON - memory footprint improvement by using homogeneous arrays (MOD-9511). |
| 67 | +- RedisJSON/ijson[#7](https://github.com/redisjson/redisjson/pull/7) JSON - memory footprint improvement by inlining short strings (MOD-9511). |
| 68 | + |
| 69 | +### Configuration parameters |
| 70 | + |
| 71 | +- [#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. |
| 72 | +- [#14296](https://github.com/redis/redis/pull/14296) `decode_array_with_array_mt` - Lua: control how empty JSON arrays are handled. |
| 73 | +- [#14440](https://github.com/redis/redis/pull/14440) `lookahead` - runtime-configurable lookahead depth (default: 16). |
| 74 | +- RediSearch/RediSearch[#7065](https://github.com/redisearch/redisearch/pull/7065) `search-default-scorer` - default text and tag scorer (new default is BM25STD). |
| 75 | +- 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: |
| 76 | + - `IGNORE` - queries run despite OOM, not recommended for heavy result sets (current behaviour). |
| 77 | + - `FAIL` - query execution fails if any node is in OOM state at start. |
| 78 | + - `RETURN` - returns partial results if OOM is detected in only some cluster nodes (default). |
| 79 | +- 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). |
| 80 | + |
| 81 | +### Known bugs and limitations |
| 82 | + |
| 83 | +- 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. |
| 84 | +- `FT.PROFILE`, `FT.EXPLAIN` and `FT.EXPLACINCLI` don’t contain the `FT.HYBRID` option. |
| 85 | +- Metrics from `FT.HYBRID` command aren’t displayed on `FT.INFO` and `INFO`. |
| 86 | +- Option `EXPLAINSCORE`, `SHARD_K_RATIO`, `YIELD_DISTANCE_AS`, and `WITHCURSOR` with `FT.HYBRID` are not available |
| 87 | +- Post-filtering (after `COMBINE` step) using FILTER is not available. |
| 88 | +- Currently, the default response format considers only `key_id` and `score`, this may change for delivering the entire document content. |
0 commit comments