Redis
✓ VerifiedGitHubOpen-source, in-memory data structure store used as a database, cache, and message broker.
Releases
208.8-RC1
4 days ago
This is the first Release Candidate of Redis 8.8 in Redis Open Source.
Release Candidates are feature-complete pre-releases. Pre-releases are not suitable for production use.
Headlines:
Redis 8.8 introduces new features and performance improvements.
Operating systems we test Redis 8.8 on
- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat), 26.04 (Resolute Raccoon)
- Rocky Linux 8.10, 9.7, 10.1
- AlmaLinux 8.10, 9.7, 10.1
- Debian 12.13 (Bookworm), Debian 13.4 (Trixie)
- Alpine 3.23
- macOS 14.8.4 (Sonoma), 15.7.4 (Sequoia), 26.3 (Tahoe) - for both Intel and ARM
Security fixes (compared to 8.8-M03)
- (CVE-2026-23479) Use-After-Free in unblock client flow may lead to Remote Code Execution.
- (CVE-2026-25243) Invalid memory access in
RESTOREmay lead to Remote Code Execution - (CVE-2026-23631) Lua Use-After-Free may lead to remote code execution
- (CVE-2026-25588) Invalid memory access in
RESTOREmay lead to Remote Code Execution (Time Series) - (CVE-2026-25589) Invalid memory access in
RESTOREmay lead to Remote Code Execution (Probabilistic)
New Features (compared to 8.8-M03)
- #15162 New data structure: Array (@antirez)
- #15045
INCREX: a window counter rate limiter combiningINCR,INCRBY,INCRBYFLOAT, bounds, and expiration (@raffertyyu + Redis team) - In group sorting new reducer, allowing unwind grouped documents (after
GROUPBY) and sort them
Removed Features (compared to 8.8-M03)
- #15191 Remove GCRA rate limiter
Bug fixes (compared to 8.8-M03)
SUBSCRIBE,PSUBSCRIBE,SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)VADD: crash or buffer overflow on largeREDUCEvalue (RED-170921)VSET: crash on huge allocations (MOD-12678)- #15188
cluster-announce-iprejecting hostnames (regression) - #15095 Double free when loading streams with duplicate consumer PEL entries
- #15124 Issues processing corrupt Streams RDB data
- #15111
fast_float_strtodrounding mismatch - #15190
vecClearreset the logical size without releasing element ownership - #15163
MULTIqueue memory incorrect memory accounting - #15094 Cluster crash when
CLIENT KILLunsubscribesSSUBSCRIBEclient insideEXEC - #15151 Listpack backlength encoding thresholds off-by-one
- #15115 Under-copy in the Lua debugger
- #14970 Sentinel config injection via
SENTINEL SET - #14934 Client output buffer memory tracking not accounting for copy-avoided bulk string references
- RediSearch/RediSearch#9182
FT.PROFILE HYBRIDreturns an empty reply (MOD-14778) - RediSearch/RediSearch#9079
FT.SPELLCHECKtreatsPARAMSplaceholders as literal terms instead of resolving them (MOD-10596) - RediSearch/RediSearch#9047
FT.PROFILEoutput is inconsistent when a profiled value is missing (MOD-10560) - RediSearch/RediSearch#9078
FT.CREATEnow rejects schema definitions with invalid option combinations at creation time (MOD-14655) - RediSearch/RediSearch#9012
PERSISTandHPERSISTnotifications are not reflected in index expiration tracking (MOD-14800) - RediSearch/RediSearch#9066 Race condition in
FT.HYBRIDcauses intermittent failures under concurrent hybrid query load (MOD-14732) - RediSearch/RediSearch#9163 Crash on
FT.SEARCHwhen topology validation fails (for example, some nodes unreachable) (MOD-14475) - RediSearch/RediSearch#9031, RediSearch/RediSearch#9473 Coordinator deadlock under mixed
FT.SEARCHandFT.AGGREGATEload (MOD-14268) - RediSearch/RediSearch#9028 Memory leak when
FT.DROPINDEXruns concurrently with in-flight hybrid queries (MOD-14135) - RediSearch/RediSearch#9310, RediSearch/RediSearch#9350
FT.CURSOR READtimeout andON_TIMEOUT FAILnot enforced on coordinator and shard (MOD-14284, MOD-14998) - RediSearch/RediSearch#9425 Cursors not cleaned up after
MAXIDLE, causing resource exhaustion (MOD-6430) - RediSearch/RediSearch#9234, RediSearch/RediSearch#9404 Coordinator
RETURN_STRICTreturns wrong data on partial results, includingSORTBYpipeline (MOD-13617) - RediSearch/RediSearch#9382
MAXPREFIXEXPANSIONwarnings not propagated to clients in cluster mode (MOD-13804) - RediSearch/RediSearch#9218 Search commands fail when no worker thread is available instead of falling back to main thread (MOD-14921)
- RediSearch/RediSearch#9448 RDB load missing validation of
FT.CREATEarguments, allowing corrupt index state on load (MOD-13118) - RediSearch/RediSearch#9377 Use-after-move in
Indexer_Processcauses crash during indexing (MOD-14980) - RediSearch/RediSearch#9408 Deadlock between background query and main-thread writer (MOD-15364)
- RediSearch/RediSearch#9114
FT.PROFILEprints output using wrong iterator type (MOD-14678) - RediSearch/RediSearch#9421 Confusing error returned when
DEBUG_PARAMS_COUNTis zero (MOD-15118) - RediSearch/RediSearch#9045 Stack-smashing error in coordinator code path (MOD-14649)
- RedisJSON/RedisJSON#1554 Trailing chars are ignored (MOD-7266); Fixes RedisJSON/RedisJSON#976
- RedisJSON/RedisJSON#1543 Wrong mutation ordering for array commands with recursive paths (MOD-6722)
- RedisJSON/RedisJSON#1542 JSONPath evaluation issues (MOD-14664); Fixes RedisJSON/RedisJSON#968 (MOD-7264), RedisJSON/RedisJSON#962 (MOD-7272), RedisJSON/RedisJSON#963 (MOD-7270), RedisJSON/RedisJSON#1089 (MOD-7268)
- RedisTimeSeries/RedisTimeSeries#2003 Potential crash on disconnections and TLS failures (MOD-14850)
- RedisTimeSeries/RedisTimeSeries#2013
count,countNaN,countAllreducers return NaN when all values are NaN (MOD-14420)
Performance and resource utilization improvements (compared to 8.8-M03)
- #15049 Hyperloglog: 4 independent accumulators that are merged at the end
- #15133 Batched prefetch for
MGETandMSET - #14988 Batched prefetch for
HGETALLon hashtable-encoded hashes - #15071 Pass size hint to jemalloc for faster deallocation
- #15096 Reduces allocator and accounting overhead by adding compile-time jemalloc tuning
- RediSearch/RediSearch#9197 Vector index hot path (HNSW and brute-force) devirtualized, reducing per-query latency (MOD-14916)
- RediSearch/RediSearch#9262, RediSearch/RediSearch#9476 Inline LSE atomics enabled on AArch64, improving atomic operation throughput on ARM64 (MOD-14916, MOD-15419)
- RediSearch/RediSearch#9293 Expiration handling overhead reduced when many keys expire simultaneously (MOD-14916)
- RediSearch/RediSearch#9017 LTO (link-time optimization) enabled for x86_64 release builds (MOD-14700)
- RediSearch/RediSearch#8765 Shard-level timeout adjusted to coordinator dispatch time for more accurate accounting (MOD-13189)
- RediSearch/RediSearch#8790, RediSearch/RediSearch#8900, RediSearch/RediSearch#8827, RediSearch/RediSearch#8971, RediSearch/RediSearch#8966, RediSearch/RediSearch#8762, RediSearch/RediSearch#8678, RediSearch/RediSearch#8915, RediSearch/RediSearch#8653, RediSearch/RediSearch#9085, RediSearch/RediSearch#8751, RediSearch/RediSearch#8692, RediSearch/RediSearch#9224 Iterators ported to Rust, reducing FFI overhead
- RediSearch/RediSearch#9500
numRecordsno longer updated for vector fields, removing unnecessary write overhead on ingest (MOD-15487) - VecSim SVS thread pool integrated with the worker pool for better thread utilization (MOD-9881)
Configuration parameters
- #15182 Slowlog entry truncation limits:
slowlog-entry-max-argc: maximum number of command arguments kept in a slowlog entryslowlog-entry-max-string-len: maximum length of a command argument in a slowlog entry
- RediSearch/RediSearch#8876, RediSearch/RediSearch#8960 Default maximum worker threads value updated;
MAX_WORKER_THREADSis now a string config (MOD-14486, MOD-14763)
Metrics (compared to 8.8-M03)
- RediSearch/RediSearch#8210, RediSearch/RediSearch#8231
FT.PROFILE: added queue time tracking (MOD-13602)
CLI tools
- #15150 Memory leak on malformed legacy help entry in redis-cli
8.6.3
2 weeks ago
Update urgency: SECURITY: There are security fixes in the release.
Security fixes
- (CVE-2026-23479) Use-After-Free in unblock client flow may lead to Remote Code Execution.
- (CVE-2026-25243) Invalid memory access in
RESTOREmay lead to Remote Code Execution - (CVE-2026-23631) Lua Use-After-Free may lead to remote code execution
- (CVE-2026-25588) Invalid memory access in
RESTOREmay lead to Remote Code Execution (Time Series) - (CVE-2026-25589) Invalid memory access in
RESTOREmay lead to Remote Code Execution (Probabilistic)
Bug fixes
SUBSCRIBE,PSUBSCRIBE,SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)VADD: crash or buffer overflow on largeREDUCEvalue (RED-170921)VSET: crash on huge allocations (MOD-12678)- Potential crash on disconnections and TLS failures (Time Series) (MOD-14850)
- RediSearch/RediSearch#8745 Crash when many keys receive expirations under heavy TTL activity (MOD-14500)
- RediSearch/RediSearch#8848 HNSW vector index memory growth under high-churn workloads until shard restart (MOD-13761)
- RediSearch/RediSearch#8205, RediSearch/RediSearch#8259
FT.HYBRIDVSIM RANGE+FILTERincorrectly returns zero results (MOD-12370, MOD-13884) - RediSearch/RediSearch#9182
FT.PROFILE HYBRIDreturns an empty reply (MOD-14778) - RediSearch/RediSearch#8129, RediSearch/RediSearch#8140
FT.PROFILEreports an incorrect shard total profile time (MOD-13735, MOD-13181) - RediSearch/RediSearch#9047
FT.PROFILEoutput is inconsistent when a profiled value is missing (MOD-10560) - RediSearch/RediSearch#8791
FT.EXPLAINdoes not lock, causing a race with concurrent index changes (MOD-14461) - RediSearch/RediSearch#8382 Crash when indexing negative zero (-0.0) (MOD-13904)
- RediSearch/RediSearch#8590
FILTERreturns inconsistent results with multiple indexes sharing field aliases (MOD-14063) - RediSearch/RediSearch#8660
FILTERbehavior depends on property order in the expression (MOD-14065) - RediSearch/RediSearch#8593 Filter expressions are evaluated for indexes that do not match the document type (MOD-14064)
- RediSearch/RediSearch#8591 Documents are inconsistently included or excluded depending on the indexing path taken (MOD-13948)
- RediSearch/RediSearch#8589
RENAMEnotification handler loads the wrong key, causing stale index entries after a rename (MOD-14328) - RediSearch/RediSearch#9012
PERSISTandHPERSISTnotifications are not reflected in index expiration tracking (MOD-14800) - RediSearch/RediSearch#9079
FT.SPELLCHECKtreatsPARAMSplaceholders as literal terms instead of resolving them (MOD-10596) - RediSearch/RediSearch#8462 GC out-of-memory on replica shards leaves the replica in an inconsistent state (MOD-14066)
- RediSearch/RediSearch#9066 Race condition in
FT.HYBRIDcauses intermittent failures under concurrent hybrid query load (MOD-14732) - RediSearch/RediSearch#8109, RediSearch/RediSearch#8149 Configuration registration omits module parameters, causing them to be unexposed or misapplied (RED-171841)
- RediSearch/RediSearch#9163 Crash on
FT.SEARCHwhen topology validation fails (for example, some nodes unreachable) (MOD-14475) - RediSearch/RediSearch#8395
FT.SEARCHfails with "Query requires unavailable slots" after shard restart or failover (MOD-13828) - RediSearch/RediSearch#8451
FT.INFO-style output no longer reports zero-index summary data when no indices exist (MOD-14079) - RediSearch/RediSearch#9078
FT.CREATEnow rejects schema definitions with invalid option combinations at creation time (MOD-14655) - RediSearch/RediSearch#8051, RediSearch/RediSearch#8114 Crash diagnostics now include the
IndexSpecof the index the failing thread was working on (MOD-7574)
Metrics
- RediSearch/RediSearch#8210, RediSearch/RediSearch#8231
FT.PROFILE: added queue time tracking (MOD-13602)
8.4.3
2 weeks ago
Update urgency: SECURITY: There are security fixes in the release.
Security fixes
- (CVE-2026-23479) Use-After-Free in unblock client flow may lead to Remote Code Execution.
- (CVE-2026-25243) Invalid memory access in
RESTOREmay lead to Remote Code Execution - (CVE-2026-23631) Lua Use-After-Free may lead to remote code execution
- (CVE-2026-25588) Invalid memory access in
RESTOREmay lead to Remote Code Execution (Time Series) - (CVE-2026-25589) Invalid memory access in
RESTOREmay lead to Remote Code Execution (Probabilistic)
Bug fixes
SUBSCRIBE,PSUBSCRIBE,SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)VADD: crash or buffer overflow on largeREDUCEvalue (RED-170921)VSET: crash on huge allocations (MOD-12678)- Potential crash on disconnections and TLS failures (Time Series) (MOD-14850)
- RediSearch/RediSearch#8744 Crash when many keys receive expirations under heavy TTL activity (MOD-14500)
- RediSearch/RediSearch#8849 HNSW vector index memory growth under high-churn workloads until shard restart (MOD-13761)
- RediSearch/RediSearch#8258
FT.HYBRIDVSIM RANGE+FILTERincorrectly returns zero results (MOD-13885) - RediSearch/RediSearch#9183
FT.PROFILE HYBRIDreturns an empty reply (MOD-14778) - RediSearch/RediSearch#9048
FT.PROFILEoutput is inconsistent when a profiled value is missing (MOD-10560) - RediSearch/RediSearch#8792
FT.EXPLAINdoes not lock, causing a race with concurrent index changes (MOD-14461) - RediSearch/RediSearch#8384 Crash when indexing negative zero (-0.0) (MOD-13904)
- RediSearch/RediSearch#8596
FILTERreturns inconsistent results with multiple indexes sharing field aliases (MOD-14063) - RediSearch/RediSearch#8661
FILTERbehavior depends on property order in the expression (MOD-14065) - RediSearch/RediSearch#8598 Filter expressions are evaluated for indexes that do not match the document type (MOD-14064)
- RediSearch/RediSearch#8597 Documents are inconsistently included or excluded depending on the indexing path taken (MOD-13948)
- RediSearch/RediSearch#8595
RENAMEnotification handler loads the wrong key, causing stale index entries after a rename (MOD-14062) - RediSearch/RediSearch#9011
PERSISTandHPERSISTnotifications are not reflected in index expiration tracking (MOD-14800) - RediSearch/RediSearch#9080
FT.SPELLCHECKtreatsPARAMSplaceholders as literal terms instead of resolving them (MOD-10596) - RediSearch/RediSearch#8461 GC out-of-memory on replica shards leaves the replica in an inconsistent state (MOD-14066)
- RediSearch/RediSearch#9091 Race condition in
FT.HYBRIDcauses intermittent failures under concurrent hybrid query load (MOD-14732) - RediSearch/RediSearch#9161 Coordinator deadlock under mixed
FT.SEARCHandFT.AGGREGATEload (MOD-14268) - RediSearch/RediSearch#9165 Crash on
FT.SEARCHwhen topology validation fails (for example, some nodes unreachable) (MOD-14475) - RediSearch/RediSearch#8394
FT.SEARCHfails with "Query requires unavailable slots" after shard restart or failover (MOD-13828) - RediSearch/RediSearch#8452
FT.INFO-style output no longer reports zero-index summary data when no indices exist (MOD-14080) - RediSearch/RediSearch#9077
FT.CREATEnow rejects schema definitions with invalid option combinations at creation time (MOD-14655)
Metrics
- RediSearch/RediSearch#8210, RediSearch/RediSearch#8231
FT.PROFILE: added queue time tracking (MOD-13602)
8.2.6
2 weeks ago
Update urgency: SECURITY: There are security fixes in the release.
Security fixes
- (CVE-2026-23479) Use-After-Free in unblock client flow may lead to Remote Code Execution.
- (CVE-2026-25243) Invalid memory access in
RESTOREmay lead to Remote Code Execution - (CVE-2026-23631) Lua Use-After-Free may lead to remote code execution
- (CVE-2026-25588) Invalid memory access in
RESTOREmay lead to Remote Code Execution (Time Series) - (CVE-2026-25589) Invalid memory access in
RESTOREmay lead to Remote Code Execution (Probabilistic)
Bug fixes
SUBSCRIBE,PSUBSCRIBE,SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)VADD: crash or buffer overflow on largeREDUCEvalue (RED-170921)VSET: crash on huge allocations (MOD-12678)- Potential crash on disconnections and TLS failures (Time Series) (MOD-14850)
- RediSearch/RediSearch#8743 Crash when many keys receive expirations under heavy TTL activity (MOD-14500)
- RediSearch/RediSearch#8850 HNSW vector index memory growth under high-churn workloads until shard restart (MOD-13761)
- RediSearch/RediSearch#9178 Coordinator deadlock under mixed
FT.SEARCHandFT.AGGREGATEload (MOD-14268) - RediSearch/RediSearch#9049
FT.PROFILEoutput is inconsistent when a profiled value is missing (MOD-10560) - RediSearch/RediSearch#8793
FT.EXPLAINdoes not lock, causing a race with concurrent index changes (MOD-14461) - RediSearch/RediSearch#8600
FILTERreturns inconsistent results with multiple indexes sharing field aliases (MOD-14063) - RediSearch/RediSearch#8662
FILTERbehavior depends on property order in the expression (MOD-14342) - RediSearch/RediSearch#8602 Filter expressions are evaluated for indexes that do not match the document type (MOD-14064)
- RediSearch/RediSearch#8601 Documents are inconsistently included or excluded depending on the indexing path taken (MOD-13948)
- RediSearch/RediSearch#8599
RENAMEnotification handler loads the wrong key, causing stale index entries after a rename (MOD-14062) - RediSearch/RediSearch#9019
PERSISTandHPERSISTnotifications are not reflected in index expiration tracking (MOD-14800) - RediSearch/RediSearch#9081
FT.SPELLCHECKtreatsPARAMSplaceholders as literal terms instead of resolving them (MOD-10596) - RediSearch/RediSearch#8464 GC out-of-memory on replica shards leaves the replica in an inconsistent state (MOD-14066)
- RediSearch/RediSearch#8888
FT.CURSORenters an infinite loop when the ACL user lacks specific permissions (MOD-14479) - RediSearch/RediSearch#9166 Crash on
FT.SEARCHwhen topology validation fails (for example, some nodes unreachable) (MOD-14475) - RediSearch/RediSearch#8453
FT.INFO-style output no longer reports zero-index summary data when no indices exist (MOD-14081) - RediSearch/RediSearch#9076
FT.CREATEnow rejects schema definitions with invalid option combinations at creation time (MOD-14655)
Metrics
- RediSearch/RediSearch#8235
FT.PROFILE: added queue time tracking (MOD-13602)
7.4.9
2 weeks ago
Update urgency: SECURITY: There are security fixes in the release.
Security fixes
- (CVE-2026-23479) Use-After-Free in unblock client flow may lead to Remote Code Execution.
- (CVE-2026-25243) Invalid memory access in
RESTOREmay lead to Remote Code Execution - (CVE-2026-23631) Lua Use-After-Free may lead to remote code execution
Bug fixes
SUBSCRIBE,PSUBSCRIBE,SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)
7.2.14
2 weeks ago
Update urgency: SECURITY: There are security fixes in the release.
Security fixes
- (CVE-2026-23479) Use-After-Free in unblock client flow may lead to Remote Code Execution.
- (CVE-2026-25243) Invalid memory access in
RESTOREmay lead to Remote Code Execution - (CVE-2026-23631) Lua Use-After-Free may lead to remote code execution
Bug fixes
SUBSCRIBE,PSUBSCRIBE,SSUBSCRIBE: crash on OOM (RED-167788)CONFIG SET: some settings allow invalid characters (RED-167787)SCRIPT DEBUG: potential crash on scripts (RED-175507)
6.2.22
2 weeks ago
Update urgency: SECURITY: There is a security fix in the release.
Security fixes
- (CVE-2026-25243) Invalid memory access in
RESTOREmay lead to Remote Code Execution
Bug fixes
SUBSCRIBE,PSUBSCRIBE,SSUBSCRIBE: crash on OOM (RED-167788)SCRIPT DEBUG: potential crash on scripts (RED-175507)
8.8-M03
3 weeks ago
This is the third Milestone of Redis 8.8 in Redis Open Source.
Milestones are non-feature-complete pre-releases. Pre-releases are not suitable for production use.
Headlines:
Redis 8.8 introduces new features and performance improvements.
Operating systems we test Redis 8.8 on
- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat), 26.04 (Resolute Raccoon)
- Rocky Linux 8.10, 9.7, 10.1
- AlmaLinux 8.10, 9.7, 10.1
- Debian 12.13 (Bookworm), Debian 13.4 (Trixie)
- Alpine 3.23
- macOS 14.8.4 (Sonoma), 15.7.4 (Sequoia), 26.3 (Tahoe) - for both Intel and ARM
New Features (compared to 8.8-M02)
- #14958 Subkey notification for hash fields - field-level notifications
- RediSearch/RediSearch#8227
FT.HYBRIDKNNclause: new argument to request fewer candidates per shard - RediSearch/RediSearch#8060
FT.PROFILEHYBRID: profiling support forFT.HYBRID
Bug fixes (compared to 8.8-M02)
- #15034, #15081 Issues processing corrupt RDB data
- #15059 Use-after-free
- #15073
CLIENT TRACKING: self-overlap returning non-zero loop index - #14982
SCANcommands: integer overflow inCOUNTparameter - #14956 Crash on
HSETEXwhen a field appears more than once and an expiry is specified - #15015 Change log level for unknown extension types from
LL_WARNINGtoLL_VERBOSE - #14995 Unnecessary
-ERRand\r\n - RediSearch/RediSearch#8708 Crash when many keys receive expirations under heavy TTL activity
- RediSearch/RediSearch#8774 Coordinator deadlock under mixed
FT.SEARCHandFT.AGGREGATEload - RediSearch/RediSearch#8415 Crash on
FT.SEARCHwhen topology validation fails (for example, some nodes unreachable) - RediSearch/RediSearch#8322 Crash when indexing negative zero (-0.0)
- RediSearch/RediSearch#8843 HNSW vector index memory growth under high-churn workloads until shard restart
- RediSearch/RediSearch#8396
FILTERreturns inconsistent results with multiple indexes sharing field aliases - RediSearch/RediSearch#8205
FT.HYBRIDVSIM RANGE+FILTERincorrectly returns zero results - RediSearch/RediSearch#8817 Instability and crashes in long-running search cursors during concurrent index updates
- RediSearch/RediSearch#8388
FT.SEARCHfails with “Query requires unavailable slots” after shard restart or failover - RediSearch/RediSearch#8548
FILTERbehavior depends on property order in the expression - RediSearch/RediSearch#8320 Index
FILTERapplied inconsistently when documents are missing filtered fields - RediSearch/RediSearch#8752 Missing blocked-client FAIL timeout mechanism for coordinator-level
FT.AGGREGATE - RediSearch/RediSearch#8657 Missing shard-level FAIL timeout handling for
FT.HYBRIDqueries - RediSearch/RediSearch#8420 Missing coordinator-level FAIL timeout handling for
FT.HYBRIDqueries - RediSearch/RediSearch#8335 Legacy shard-level FAIL handling for
FT.SEARCH/FT.AGGREGATE - RediSearch/RediSearch#8191
FT.SEARCHcoordinator lacks strict FAIL timeout enforcement
Performance and resource utilization improvements (compared to 8.8-M02)
- #15114 Optimize SET key value GET
- #15065, #15118 Scan commands key collection: replace list with append-only pointer vector
- #15061 Widen
fast_float_strtodfast path to 17-19 digit mantissas - RediSearch/RediSearch#8378 Optimize filter expression evaluation: skip indexes not matching the document type (MOD-14064)
Metrics (compared to 8.8-M02)
- RediSearch/RediSearch#8246 ‘frontend_buffer_size’, ‘HNSW_main_thread_insertion’: metrics for tiered vector indexes (MOD-13819)
- RediSearch/RediSearch#8210
FT.PROFILE: added queue time tracking (MOD-13602) - RediSearch/RediSearch#8283
INFO: Skip metrics when there are no indices (MOD-13903) - RediSearch/RediSearch#7417 Add unique error message ids for improved debugging and troubleshooting (MOD-11806)
Configuration parameters
- RediSearch/RediSearch#8876
search-workers: change default to 16 (MOD-14486) - RediSearch/RediSearch#8352
BG_INDEX_SLEEP_DURATION_US: sleep duration during background indexing (MOD-13994)
8.8-M02
1 month ago
This is the second Milestone of Redis 8.8 in Redis Open Source.
Milestones are non-feature-complete pre-releases. Pre-releases are not suitable for production use.
Headlines:
Redis 8.8 introduces new features and performance improvements.
8.8-M02 is available as a Docker image and can be downloaded from Docker Hub. Additional distributions will be introduced in upcoming pre-releases.
Operating systems we test Redis 8.8 on
- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat), 26.04 (Resolute Raccoon)
- Rocky Linux 8.10, 9.7, 10.1
- AlmaLinux 8.10, 9.7, 10.1
- Debian 12.13 (Bookworm), Debian 13.4 (Trixie)
- Alpine 3.23
- macOS 14.8.4 (Sonoma), 15.7.4 (Sequoia), 26.3 (Tahoe) - for both Intel and ARM
New Features (compared to 8.6)
- #14826, #14905 GCRA (generic cell rate algorithm) rate limiter (based on the redis-cell module by @brandur - thank you!)
- #14797
XNACK: a new streams command that allows consumers to explicitly release pending messages - RedisJSON/RedisJSON#1509
JSON.SET: newFPHAargument to specify the FP type for homogeneous FP arrays (MOD-13577) - #14892
ZUNION,ZINTER,ZUNIONSTORE,ZINTERSTORE: newCOUNTaggregator - RedisTimeSeries/RedisTimeSeries#1916
TS.RANGE,TS.REVRANGE,TS.MRANGE,TS.MREVRANGE: multiple aggregators in a single command (MOD-9162)
Bug fixes (compared to 8.6.2)
- #15037
XINFO STREAM: wrong value in the per-slot memory tracking - #12000 Incorrect shrinking of querybuf when client is reading a big argv
- #15021
HEXPIRE: overflow on fields count - #14963
XREADGROUP: consumer replication inconsistency - #15011 Double-free in rdbLoadObject
- #14667, #14886 Potential TCP stalls/deadlocks
- #14942 Fix
COMMAND GETKEYS for PFMERGEwith no source keys - #14888 Hardens safety check in
lpSafeToAdd - #14748 Ensure sensitive user data is not exposed in logs when
hide_user_data_from_logis enabled - #14877
INFO KEYSIZESand INFO ALLOCSIZES` fixes - #14878 listpack memory leak in zipmap-to-hash conversion on error path
- #14955 Streams: IDMP-related bug
- #14974, #14932, #14866 Memory leaks
- #14790 Missing initialization
- #14789 DB hash tables not expanding during RDB load on standalone-mode
- #14785 Add
HOTKEYS HELPsubcommand (Each command having subcommands needs aHELPsubcommand) - #14784
RESTOREandSET:expiredkeyscounter updates incorrectly on keys with past expiration time - #14779 Accurate memory accounting for RedisModuleDict (instead of estimation)
- #14774 Missing cleanup code in
getKeysFreeResult()on cross-slot error path - #14771 Potential unsigned integer underflow in
used_memory_dataset calculation - #14780 Fixed name of
HOTKEYSresults fieldsampled-command-selected-slots-ustosampled-commands-selected-slots-us - #14756
HOTKEYSdoes not track each command in aMULTI/EXECblock - #14749 Fixed
HOTKEYS GETRESP3 reply fixed to map instead of flat array - RedisJSON/RedisJSON#1520 Numeric operations on homogeneous arrays: promote to next type if results overflow (MOD-14427)
- RedisJSON/RedisJSON#1519
JSON.NUMINCRBY,JSON.NUMMULTBYdon’t error on numeric overflow (MOD-14191) - RedisJSON/RedisJSON#1487 Depth limit (128) was not fully enforced (MOD-4107)
- RedisTimeSeries/RedisTimeSeries#1910
TS.INCRBY,TS.DECRBYcreate key before validating args (MOD-8167) - RedisTimeSeries/RedisTimeSeries#1908 Potential crash on
TS.RANGEwith aggregation andEMPTY - RedisTimeSeries/RedisTimeSeries#1896 Potential memory leak (MOD-13438)
- RedisTimeSeries/RedisTimeSeries#1913 ACL rules are not fully enforced for multi-key commands on a cluster setup (MOD-14124)
Performance and resource utilization improvements (compared to 8.6.2)
- #15003 Reduce overhead in command propagation
- #14979 Dismiss dict bucket arrays in fork child to reduce CoW
- #14661 Replace fast_float C++ library with pure C implementation
- #14928 Disable memory tracking in child processes
- #14885 Optimize rax (radix tree) insert and lookup for sequential key patterns
- #14335 Handle primary/replica clients in I/O threads
- #14754 Optimize prefetching commands
- #14770 Optimize
BITOPoperations with AVX512 - #14862 Streams: Filter expired IDMP entries during RDB save and load
- #14750
SFLUSHcan now flush slots partially - #14887
SFLUSHskips slot trimming when the requested slot ranges exactly match the node’s local slot coverage - #14851 Skip RDB checksum computation/validation during diskless full synchronization to reduce CPU overhead
- #14783 Pause dict auto-resize during multi-field deletion
- RedisTimeSeries/RedisTimeSeries#1884
TS.RANGE,TS.REVRANGE,TS.MRANGE,TS.MREVRANGE: improve performance on a cluster setup (RED-184104) - RedisTimeSeries/RedisTimeSeries#1866 Register to
type_changedKSN instead ofset(MOD-12919)
Modules API
- #14445 Allow modules to associate metadata with keys
RedisModule_CreateKeyMetaClass- define a new key-metadata classRedisModule_ReleaseKeyMetaClass- release a key-metadata classRedisModule_SetModuleMetadata- attach or update metadata to a keyRedisModule_GetKeyMeta- get key metadata
Metrics
- #14896
INFO STATS- global stats for slowlog metrics:slowlog_commands_count- commands written to slowlogslowlog_commands_time_ms_sum- sum of execution times of commands from the slowlogslowlog_commands_time_ms_max- maximum execution time of a command from the slowlog
- #14896
INFO COMMANDSTATS- per-command stats for slowlog metrics:slowlog_count- number of times the command was written in the slowlogslowlog_time_ms_sum- sum of execution time of the command (only from the slowlog)slowlog_time_ms_max- maximum execution time of the command (only from the slowlog) -14841INFO STATS(global, all clients aggregated):total_client_processing_events: attempts to process client input buffers; does not guarantee any command was actually parsedeventloop_cycles_with_clients_processing: event loop cycles where client input buffers were processedcommands_per_parse_batch_sum: cumulative number of commands parsed across all parsing batches for all clientscommands_per_parse_batch_cnt: number of parsing batches across all clients. A batch is counted each time at least one command is parsed from a client's query buffercommands_per_parse_batch_avg: average commands parsed per batch (sum/cnt). Approximates pipelining depth -#14841CLIENT INFOandCLIENT LIST(per-client):read-events: number of read events for this clientparse-batch-cmd-sum: cumulative number of commands parsed across all parsing batches for this clientparse-batch-cnt: total number of parsing batches for this client. Divideparse-batch-cmd-sumby this value to get the client’s average commands per batch
CLI tools
- #14371 Divide-by-zero in redis-benchmark and redis-cli
- #14863 Memory leak in redis-cli
- #14703 redis-cli --keystats: fix percentile calculation
8.6.2
1 month ago
Bug fixes
- #14824 Potential UAF: don't use reply copy avoidance for module strings
- #14848 Crash during command processing on replicas performing full synchronization
- #14794 New
XIDMPRECORDinternal command and AOFRW emission to restore stream IDMP state - #14816 setModuleEnumConfig() passing prefixed name to module callbacks
- #14858 Streams: Ensures
XADDwithIDMP/IDMPAUTOthat hits an existing IID records the metadata change - #14855, #14831, #14817 Potential memory leaks
- #14869 Streams: IDMP cron expiration not working after RDB load
- #14847 Potential crash during ACL checks on wrong-arity commands
- #14883
HSETEX,HGETEXdo not validate thatFIELDSis specified only once - #14897 Streams: IDMP-related bugs
7.2.13
2 months ago
SECURITY: There is a security fix in the release
Security fixes
- A user can manipulate data read by a connection by injecting \r\n sequences into a Redis error reply
7.4.8
2 months ago
SECURITY: There is a security fix in the release
Security fixes
- A user can manipulate data read by a connection by injecting \r\n sequences into a Redis error reply
8.0.6
2 months ago
SECURITY: There is a security fix in the release
Security fixes
- A user can manipulate data read by a connection by injecting \r\n sequences into a Redis error reply
8.2.5
2 months ago
SECURITY: There is a security fix in the release
Security fixes
- A user can manipulate data read by a connection by injecting \r\n sequences into a Redis error reply
8.4.2
2 months ago
SECURITY: There is a security fix in the release
Security fixes
- A user can manipulate data read by a connection by injecting \r\n sequences into a Redis error reply
8.6.1
2 months ago
SECURITY: There is a security fix in the release
Security fixes
- A user can manipulate data read by a connection by injecting \r\n sequences into a Redis error reply
Bug fixes
- #14785
HOTKEYS: TheINFOcommand may display module information, and the missingHOTKEYS HELPsubcommand has been added - #14789 Bug in RDB loading prevented hash table expansion, increasing load time
8.6.0
3 months ago
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:
XADDidempotency (at-most-once guarantee) with newIDMPAUTOandIDMParguments - New eviction policies - least recently modified:
volatile-lrmandallkeys-lrm - Hot keys detection and reporting; new command:
HOTKEYS - TLS certificate-based automatic client authentication
- Time series: support NaN values; new aggregators:
COUNTNANandCOUNTALL
For more details, see the 8.6 release blog post.
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 Keys memory size histograms
Performance and resource utilization improvements (compared to 8.6-RC1)
- #14714 Optimize user ACL permission verification
- #14692 Optimize peak memory metric collection
- #14739 Avoid allocating and releasing list node in reply copy avoidance
- #14713 Reduce per command syscalls by reusing cached time when hardware monotonic clock is available
- #14726 Optimize
XREADGROUP CLAIM - #13962 Vector set: replace manual popcount with __builtin_popcountll for binary vector distance (Intel, AMD, ARM)
- #14474 Vector set: vectorized the quantized 8-bit vector distance calculation (Intel, AMD)
- #14492 Vector set: vectorize binary quantization path for vectorsets distance calculation (Intel, AMD)
Configuration parameters
- #14719
cluster-slot-stats-enabled- per-slot resource consumptions statistics to collect - #14695
key-memory-histogramscollect memory consumption histograms per data type
Metrics
- #14695
db0_distrib_lists_sizes,db0_distrib_sets_sizes,db0_distrib_hashes_sizes,db0_distrib_zsets_sizes
known bugs and limitations
- Streams: avoid using
XADDwith the newIDMPorIDMPAUTOoptions when usingappendonly yeswithaof-use-rdb-preamble no(non default). This limitation will be removed in the next patch.
8.4.1
3 months ago
Update urgency: SECURITY: There are security fixes in the release.
Security fixes
- RedisTimeSeries/RedisTimeSeries#1837, RedisJSON/RedisJSON#1474 Hide Personally Identifiable Information from server log
- RedisBloom/RedisBloom#936 Cuckoo filter: crash on RDB load on 0 buckets (MOD-11593)
- RedisBloom/RedisBloom#945 Bloom filter: crash on RDB load on large number of filters (MOD-11590)
Bug fixes
- #14637 Atomic slot migration: wrong adjacent slot range behavior
- #14567 Atomic slot migration: support delay trimming slots after finishing migrating slots
- #14746
CLUSTER SLOT-STATS: Fix few memory tracking bugs - RedisTimeSeries/RedisTimeSeries#1864 Atomic slot migration: time series limitations (MOD-13611)
- RediSearch/RediSearch#6973 Correct empty string token counting in byteOffset calculations to ensure accurate text position tracking (MOD-11233)
- RediSearch/RediSearch#6995 Prevent
FT.INFOcommand fanout to replicas to reduce unnecessary cluster traffic - RediSearch/RediSearch#7154 Display Background Indexing OOM warning in
FT.AGGREGATEwhen memory limits are approached (MOD-11817) - RediSearch/RediSearch#7219 Resolve concurrency issue in
FT.AGGREGATEreducer that caused intermittent errors (MOD-12243) - RediSearch/RediSearch#7255 Correct
BM25STDunderflow wraparound to prevent incorrect scoring (MOD-12223) - RediSearch/RediSearch#7264 Ensure accurate
totalDocsLenupdates to maintain correct document statistics (MOD-12234) - RediSearch/RediSearch#7275 Report used memory as unsigned long to prevent overflow (RED-169833)
- RediSearch/RediSearch#7350
FT.CREATEwith LeanVec parameters on non-Intel architectures (RED-176382) - RediSearch/RediSearch#7371 Validate
search-min-operation-workersmin value correctly (MOD-12383) - RediSearch/RediSearch#7430 Prevent coordinator deadlock in
FT.HYBRIDqueries by avoiding index read lock (MOD-12489) - RediSearch/RediSearch#7435 Ensure full profile output on timeout with
RETURNpolicy inFT.PROFILE(MOD-12320) - RediSearch/RediSearch#7446 Remove outdated validation from debug aggregate in cluster mode (MOD-12435)
- RediSearch/RediSearch#7455 Ensure internal cursors are deleted immediately in cluster mode (MOD-12493)
- RediSearch/RediSearch#7458 Correct GC regression that caused stability issues (MOD-12538)
- RediSearch/RediSearch#7460 Prevent potential double-free on error path in Fork GC (MOD-12521)
- RediSearch/RediSearch#7499 Propagate
HGETALLcommand in HDT mode (MOD-12662) - RediSearch/RediSearch#7534 Reduce number of worker threads asynchronously to prevent performance degradation (MOD-12252, MOD-11658)
- RediSearch/RediSearch#7553 Handle
WITHSCOREScorrectly when SCORE is sent alone without extra fields in coordinator (MOD-12647) - RediSearch/RediSearch#7560 Properly handle connection closing in IO thread at shutdown and fix searchRequestCtx freeing on error (MOD-12699)
- RediSearch/RediSearch#7685 Resolve cursor logical leak that could lead to resource exhaustion (MOD-12807)
- RediSearch/RediSearch#7710 Support for
WITHCOUNTinFT.AGGREGATE(MOD-11751) - RediSearch/RediSearch#7794 Correctly handle binary data with embedded NULLs to prevent crashes (MOD-13010)
- RediSearch/RediSearch#7812 Correct SVS GC for no-workers case (MOD-12983)
- RediSearch/RediSearch#7815 Fix command routing in cluster mode by not relying on shard index (MOD-13049)
- RediSearch/RediSearch#7823 Support vector blob only through parameter in
FT.HYBRID(MOD-13123) - RediSearch/RediSearch#7873 Handle warnings in empty
FT.AGGREGATEreplies in cluster mode (MOD-12640) - RediSearch/RediSearch#7897 Remove asserts from DownloadFile to prevent crash (MOD-13096)
- RediSearch/RediSearch#7901 Support multiple warnings in reply to prevent warning loss (MOD-13252)
- RediSearch/RediSearch#7903 Eliminate memory leak in
FT.HYBRIDqueries with Active-Active enabled (MOD-13143) - RediSearch/RediSearch#7886 Remove non-TEXT fields from spec's keys dictionary to prevent incorrect field handling (MOD-13150)
- RediSearch/RediSearch#7905 Remove non-TEXT fields from spec's keys dictionary and refactor keys dict (MOD-13150, MOD-13151)
- RediSearch/RediSearch#7978 Avoid using negative key position values during command registration (MOD-13332)
- RediSearch/RediSearch#8052 Resolve incorrect results when using
LOAD *withFT.HYBRID(MOD-12736, MOD-13556) - RediSearch/RediSearch#8083 Correct
FULLTEXTfield metric count accuracy (MOD-13432) - RediSearch/RediSearch#8089 Handle edge case in clusterset (MOD-13562)
- RediSearch/RediSearch#8151 Correct
FT.PROFILEshard total profile time calculation (MOD-13735, MOD-13181) - RediSearch/RediSearch#8153 Resolve config registration issue (RED-171841)
- RediSearch/RediSearch#7449 Ensure
FT.HYBRIDrespects timeout settings (MOD-11004) - RediSearch/RediSearch#7238 Initialize GIL_TIME properly for
FT.PROFILE(MOD-12553) - RediSearch/RediSearch#7453 Error behavior on early bailout and split OOM warning for shard and coordinator (MOD-12449)
- RediSearch/RediSearch#7615 Parameter
numDocsfrom non-optimized Wildcard iterator (MOD-12392) - RediSearch/RediSearch#7165 (Redis Enterprise only)
FT.DROPINDEXas touches-arbitrary-keys for proper cluster handling causing crash on A-A (MOD-11090) - RediSearch/RediSearch#7023 (Redis Enterprise only) Ensure all
FT.SUG*commands are hashslot-aware to prevent cluster routing errors (MOD-11756)
Performance and resource utilization improvements
- RediSearch/RediSearch#7496 Vector search performance improvements (MOD-12011, MOD-12063, MOD-12629, MOD-12346)
- RediSearch/RediSearch#7519 Reduce number of worker threads asynchronously to improve resource utilization (MOD-12252, MOD-11658)
- RediSearch/RediSearch#7694 Use asynchronous jobs in GC for SVS to reduce blocking (MOD-12668)
- RediSearch/RediSearch#7730 Support
filter_policyandbatch_sizeparameters for vector similarity search tuning (MOD-13007, MOD-12371) - RediSearch/RediSearch#7782 Resolve SVS GC failures when worker threads are disabled (MOD-12983)
- RediSearch/RediSearch#7572 Implement ASM state machine on notifications (MOD-12170)
- RediSearch/RediSearch#7829 ASM-aware search flow for Active-Active deployments (MOD-12171, MOD-12169)
- RediSearch/RediSearch#7589 Support multiple slot ranges in
search.CLUSTERSETfor flexible cluster topology updates (MOD-11657) - RediSearch/RediSearch#7862 Support subquery count in
FT.HYBRID(MOD-11858, MOD-13146) - RediSearch/RediSearch#7893 Request policy support for cursor operations (MOD-13146, MOD-9573, MOD-8104)
- RediSearch/RediSearch#8087 Warning when cursor may give inaccurate results due to Active-Active replication (MOD-12899)
- RediSearch/RediSearch#7445 Remove outdated validation from Debug Aggregate in cluster mode (MOD-12435)
- RediSearch/RediSearch#7384 Reduce index load from RDB temporary memory overhead (MOD-12212)
Metrics
- RediSearch/RediSearch#7960 Persist query warnings across cursor reads (MOD-12984)
- RediSearch/RediSearch#7612 Track
maxprefixexpansionserrors and warnings in info (MOD-12417) - RediSearch/RediSearch#7872 Handle warnings in empty
FT.AGGREGATEreplies in cluster mode (MOD-12640) - RediSearch/RediSearch#7900 Support multiple warnings in reply (MOD-13252)
- RediSearch/RediSearch#7576 Track OOM errors and warnings in info (MOD-12418)
- RediSearch/RediSearch#7507 Track timeout errors and warnings in info (MOD-12419)
- RediSearch/RediSearch#7341 Rename
FT.PROFILEcounter fields for clarity (MOD-6056) - RediSearch/RediSearch#7436, RediSearch/RediSearch#7427 Enhance
FT.PROFILEwith vector search execution details (MOD-12263) - RediSearch/RediSearch#7573 Debug support for
FT.PROFILEcommand (MOD-12627) - RediSearch/RediSearch#7736 Add
Internal cursor readsmetric to clusterFT.PROFILEoutput (MOD-12414) - RediSearch/RediSearch#7692 Declare query error struct on
_FT.CURSOR PROFILE(MOD-12955) - RediSearch/RediSearch#7848 Store and display shard ID in profile output (MOD-12321)
- RediSearch/RediSearch#7422 Track syntax and argument errors in query error metrics (MOD-12416)
- RediSearch/RediSearch#7552 Add
active_io_threadsmetric (MOD-12069, MOD-12695) - RediSearch/RediSearch#7622 Add
active_coord_threadsmetric (MOD-12694, MOD-12069) - RediSearch/RediSearch#7564 Add
active_worker_threadsmetric (MOD-12694, MOD-12069) - RediSearch/RediSearch#7626 Add
*_pending_jobsmetrics for job queues (MOD-12069) - RediSearch/RediSearch#7658 Add pending workers admin jobs metric (MOD-12069, MOD-12791)
- RediSearch/RediSearch#7731 Add
active_topology_update_threadsmetric (MOD-12069, MOD-12790) - RediSearch/RediSearch#7760 Extend indexing metrics for more detailed performance data (MOD-12070)
Configuration parameters
- RediSearch/RediSearch#7083 Add default scorer configuration option (MOD-10037)
8.2.4
3 months ago
Update urgency: SECURITY: There are security fixes in the release.
Security fixes
- RedisTimeSeries/RedisTimeSeries#1837, RedisJSON/RedisJSON#1474 Hide Personally Identifiable Information from server log
Bug fixes
- RedisJSON/RedisJSON#1430 Malformed panic log messages (MOD-9365)
- RedisBloom/RedisBloom#945 Bloom filter: crash on RDB load on large number of filters (MOD-11590)
- RediSearch/RediSearch#6973 Correct empty string token counting in byteOffset calculations to ensure accurate text position tracking (MOD-11233)
- RediSearch/RediSearch#6995 Prevent
FT.INFOcommand fanout to replicas to reduce unnecessary cluster traffic - RediSearch/RediSearch#7034 Correct goto statement handling on RDB load
- RediSearch/RediSearch#7154 Display Background Indexing OOM warning in
FT.AGGREGATEwhen memory limits are approached (MOD-11817) - RediSearch/RediSearch#7219 Resolve concurrency issue in Reducer that caused intermittent errors (MOD-12243)
- RediSearch/RediSearch#7255 Correct
BM25STDunderflow wraparound to prevent incorrect scoring (MOD-12223) - RediSearch/RediSearch#7264 Ensure accurate
totalDocsLenupdates to maintain correct document statistics (MOD-12234) - RediSearch/RediSearch#7275 Report used memory as unsigned long to prevent overflow (RED-169833)
- RediSearch/RediSearch#7350 Allow
FT.CREATEwith LeanVec parameters on non-Intel architectures (RED-176382) - RediSearch/RediSearch#7384 Reduce index load from RDB temporary memory overhead (MOD-12212)
- RediSearch/RediSearch#7435 Ensure full profile output on timeout with
RETURNpolicy inFT.PROFILE(MOD-12320) - RediSearch/RediSearch#7446 Remove outdated validation from debug aggregate in cluster mode (MOD-12435)
- RediSearch/RediSearch#7458 Correct GC regression that caused stability issues (MOD-12538)
- RediSearch/RediSearch#7459 Prevent potential double-free in Fork GC error path (MOD-12521)
- RediSearch/RediSearch#7470 Remove draining from Flush callback to avoid blocking
- RediSearch/RediSearch#7499 Propagate
HGETALLcommand in HDT mode (MOD-12662) - RediSearch/RediSearch#7534 Reduce number of worker threads asynchronously to prevent performance degradation (MOD-12252, MOD-11658)
- RediSearch/RediSearch#7554 Handle Coordinator case when
SCOREis sent alone without extra fields (MOD-12647) - RediSearch/RediSearch#7561 Prevent memory corruption when freeing searchRequestCtx on error (MOD-12699)
- RediSearch/RediSearch#7685 Resolve cursor logical leak that could lead to resource exhaustion (MOD-12807)
- RediSearch/RediSearch#7710 Add support for
WITHCOUNTinFT.AGGREGATE(MOD-11751) - RediSearch/RediSearch#7794 Correctly handle binary data with embedded NULLs to prevent crashes (MOD-13010)
- RediSearch/RediSearch#7812 Correct SVS GC for no-workers case (MOD-12983)
- RediSearch/RediSearch#7873 Handle warnings in empty
FT.AGGREGATEreplies in cluster mode (MOD-12640) - RediSearch/RediSearch#7886 Remove non-TEXT fields from spec's keys dictionary to prevent incorrect field handling (MOD-13150)
- RediSearch/RediSearch#7901 Support multiple warnings in reply to prevent warning loss (MOD-13252)
- RediSearch/RediSearch#8083 Correct
FULLTEXTfield metric count accuracy (MOD-13432) - RediSearch/RediSearch#8153 Resolve config registration issue (RED-171841)
- RediSearch/RediSearch#7371 Validate
search-min-operation-workersmin value correctly (MOD-12383) - RediSearch/RediSearch#8151 Correct
FT.PROFILEshard total profile time calculation (MOD-13735, MOD-13181) - RediSearch/RediSearch#7165 (Redis Enterprise only)
FT.DROPINDEXas touches-arbitrary-keys for proper cluster handling causing crash on A-A (MOD-11090) - RediSearch/RediSearch#7023 (Redis Enterprise only) Ensure all
FT.SUG*commands are hashslot-aware to prevent cluster routing errors (MOD-11756)
Performance and resource utilization improvements
- RediSearch/RediSearch#7496 Vector search performance improvements (MOD-12011, MOD-12063, MOD-12629, MOD-12346)
- RediSearch/RediSearch#7694 Use asynchronous jobs in GC for SVS to reduce blocking (MOD-12668)
Metrics
- RediSearch/RediSearch#7614 Track timeout errors and warnings in info (MOD-12419)
- RediSearch/RediSearch#7646 Track
maxprefixexpansionserrors and warnings in info (MOD-12417) - RediSearch/RediSearch#7957 Persist query warnings across cursor reads (MOD-12984)
- RediSearch/RediSearch#7341 Rename
FT.PROFILEcounter fields for clarity (MOD-6056) - RediSearch/RediSearch#7436 Enhance
FT.PROFILEwith vector search execution details (MOD-12263) - RediSearch/RediSearch#7737 Add
Internal cursor readsmetric to clusterFT.PROFILEoutput (MOD-12414) - RediSearch/RediSearch#7692 Declare query error struct on
_FT.CURSOR PROFILE(MOD-12955) - RediSearch/RediSearch#7552 Add
active_io_threadsmetric (MOD-12069, MOD-12695) - RediSearch/RediSearch#7564 Add
active_worker_threadsmetric (MOD-12694, MOD-12069) - RediSearch/RediSearch#7623 Add
active_coord_threadsmetric (MOD-12694, MOD-12069) - RediSearch/RediSearch#7626 Add
*_pending_jobsmetrics for job queues (MOD-12069) - RediSearch/RediSearch#7672 Add pending workers admin jobs metric (MOD-12069, MOD-12791)
- RediSearch/RediSearch#7732 Introduce
active_topology_update_threadsmetric (MOD-12069, MOD-12790) - RediSearch/RediSearch#7759 Extend indexing metrics for better observability (MOD-12070)
Configuration parameters
- RediSearch/RediSearch#7083 Add default scorer configuration option (MOD-10037)
8.6-RC1
3 months ago
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
- 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, 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 Streams:
XADDidempotency (at-most-once guarantee) with newIDMPAUTOandIDMParguments - #14624 New eviction policies - least recently modified:
volatile-lrmandallkeys-lrm - #14680 Hot keys detection and reporting; new command:
HOTKEYS - #14610 TLS certificate-based automatic client authentication
- RedisTimeSeries/RedisTimeSeries#1853 Time series: support NaN values; new aggregators:
COUNTNANandCOUNTALL
Security and privacy fixes
- #14645 Hide Personally Identifiable Information from ACL log
- #14659 ACL: Key-pattern bypass in
MSETEX - RedisTimeSeries/RedisTimeSeries#1837, RedisJSON/RedisJSON#1474 Hide Personally Identifiable Information from server log
- RedisBloom/RedisBloom#950 Out-of-bounds read when loading an invalid RDB file (MOD-12802)
Bug fixes (compared to 8.4.0)
- #14545 ACL: AOF loading fails if ACL rules are changed and don't allow some commands in
MULTI-EXEC - #14637 Atomic slot migration: wrong adjacent slot range behavior
- #14567 Atomic slot migration: support delay trimming slots after finishing migrating slots
- #14623 Streams:
XTRIM/XADDwith approx mode (~) don’t delete entries forDELREF/ACKEDstrategies - #14552 Streams: Incorrect behavior when using
XDELEX...ACKEDafterXGROUP DESTROY` - #14537
SCAN: restore original filter order (revert change introduced in 8.2) - #14581 Rare server hang at shutdown
- #14597 Panic when cluster node is uninitialized
- #14583
FLUSHALL ASYNCon a writable replica may block the main thread for an extended period - #14504 Cluster: fix race condition in broadcast configuration
- #14416 Fixed argument position handling in Redis APIs
- RedisTimeSeries/RedisTimeSeries#1784, RedisTimeSeries/RedisTimeSeries#1839, RedisBloom/RedisBloom#952, RedisJSON/RedisJSON#1477 Atomic slot migration support
- RedisBloom/RedisBloom#946
MEMORY USAGE: fix reported value (MOD-12799) - RedisJSON/RedisJSON#1473 Adding escapes to already-escaped characters (MOD-8137)
- RedisJSON/RedisJSON#1475
JSON.CLEARdoes not error if more than one path is specified (MOD-13109)
Performance and resource utilization improvements (compared to 8.4.0)
- #14608 Reply copy-avoidance path to reduce memory copies for bulk string replies
- #14595 Hash: unify field name and value into a single struct
- #14701 Sorted set: unify score and value into a single struct
- #14662 Optimize listpack iterator on hash fields
- #14699 Optimize set commands with expiration
- #14700 Optimize prefetching
- #14715 Optimize prefetch sizing logic
- #14636 Optimize
ZRANK - #14676 Utilize hardware clock by default on ARM AArch64
- #14575 Disable RDB compression when diskless replication is used
Modules API
- #14445
RM_CreateKeyMetaClass- define a new key-metadata classRM_ReleaseKeyMetaClass- release a key-metadata classRM_SetKeyMeta- attach or update a metadata value for a key under a specific metadata-key classRM_GetKeyMeta- get a metadata value for a key under a specific metadata-key class
Configuration parameters
- #14624
maxmemory-policy: new eviction policies:volatile-lrm,allkeys-lrm - #14615
stream-idmp-duration,stream-idmp-maxsize- defaults for streams idempotent production - #14610
tls-auth-clients-userTLS certificate-based automatic client authentication - #14596
flushdboption forrepl-diskless-load: always flush the entire dataset before diskless load
Metrics
- #14610
acl_access_denied_tls_cert- failed TLS certificate–based authentication attempts
known bugs and limitations
- Redis Query Engine: 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.