This is a preview — how redis's changelog would look hosted on Wakelog (100 entries found, first 15 shown). Nothing was saved. To make it real: sign up (30 seconds, no email), create a project, and paste the same URL in the Import box — you'll also get RSS, an embeddable widget, a README badge, and an API. Try another.

redis

v8.10.0

Jul 29, 2026

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

Major changes compared to 8.8
  • Compact hashes - a new hash encoding that reduces memory usage by storing hash field names just once for keys that share a schema
  • New command: HIMPORT - high-throughput compact hash bulk insertion
  • TLS peer certificate-based server-to-server authentication
  • New commands: LMOVEM, BLMOVEM - move multiple elements between lists
  • New command: SUNIONCARD - get the cardinality of the union of multiple sets
  • New command: SDIFFCARD - get the cardinality of the difference between sets
  • New command: BACKUP - node-side implementation for backup and restore based on multi-part AOF (MP-AOF)
  • XREAD, XREADGROUP - new MAXCOUNT and MAXSIZE arguments to cap the cumulative reply entries and size
  • New command: FT.ALIASLIST - get all aliases for the index
  • Stemmer support for Malay and Tagalog languages
  • JSONPath extensions
  • New commands: TS.NRANGE, TS.NREVRANGE - Query a range across multiple time series; group results by timestamp
  • New command: TS.READ - optionally blocking read
  • New command: TS.QUERYLABELS - Get a list of labels and label-values
  • New command: TS.MRANGE, TS.MREVRANGE - new EXCLUDEEMPTY argument to exclude series with no reported samples
  • Performance improvements
Binary distributions
Operating systems we test Redis 8.10 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
Bug fixes (compared to 8.10-RC2)
  • #15513 Prevented a division-by-zero error when active defragmentation thresholds are configured with equal or reversed value
  • #15453 Clients blocked on BLPOP, BLMOVE, or BLMOVEM could remain blocked after SORT with STORE replaced the target key with a list
  • #15499 Memory usage reported for compressed replication clients could be lower than the actual memory consumed
  • #15518 notify modules when node's own ip/port changes
  • #15539 Loading an AOF file with an RDB preamble could fail when active defragmentation was enabled
  • RediSearch/RediSearch#10528 Crash in the numeric range tree when background garbage collection encounters an empty leaf during active indexing on a numeric field. (MOD-16877)
  • RediSearch/RediSearch#10605 FT.CREATE and FT.ALTER now reject an empty string as a field name, preventing a crash loop in the fork-GC on indexes with an empty TAG field. (MOD-17034)
  • RediSearch/RediSearch#10488 FT.INFO reports a negative num_records after garbage collection on indexes that include an INDEXMISSING field. (MOD-16940)
  • RediSearch/RediSearch#10568 Cluster FT.AGGREGATE fails with SEARCH_FIELD_DUP when a GROUPBY contains multiple REDUCE COLLECT calls over the same field differing only in option-keyword casing. (MOD-16365)
  • RediSearch/RediSearch#10605 FT.CREATE and FT.ALTER now return an error when a field name is an empty string; previously such schemas were accepted silently. (MOD-17034)
  • RediSearch/RediSearch#10522 coord_total_query_warnings_timeout double-counts timeout warnings for FT.SEARCH queries that use a hybrid (vector + filter) execution path. (MOD-15973)

v8.8.1

Jul 23, 2026

SECURITY: There is a security fix in the release.

Security fixes
  • RedisBloom/RedisBloom#1044 Crafted RESTORE payloads in RedisBloom and TDigest may trigger out-of-bounds writes, potentially leading to remote code execution

v8.6.5

Jul 23, 2026

SECURITY: There are security fixes in the release.

Security fixes
  • A crafted stream RESTORE payload can make two consumers share the same NACK, leading to a use-after-free that may result in Remote Code Execution
  • RedisBloom/RedisBloom#1046 Crafted RESTORE payloads in RedisBloom and TDigest may trigger out-of-bounds writes, potentially leading to remote code execution
Bug fixes
  • RedisBloom/RedisBloom#1021 Replicate CF.LOADCHUNK data chunks to prevent silent Cuckoo Filter data loss on failover

v8.4.5

Jul 23, 2026

SECURITY: There are security fixes in the release.

Security fixes
  • A crafted stream RESTORE payload can make two consumers share the same NACK, leading to a use-after-free that may result in Remote Code Execution
  • RedisBloom/RedisBloom#1039 Crafted RESTORE payloads in RedisBloom and TDigest may trigger out-of-bounds writes, potentially leading to remote code execution
Bug fixes
  • RedisBloom/RedisBloom#1020 Replicate CF.LOADCHUNK data chunks to prevent silent Cuckoo Filter data loss on failover

v8.2.8

Jul 23, 2026

SECURITY: There are security fixes in the release.

Security fixes
  • A crafted stream RESTORE payload can make two consumers share the same NACK, leading to a use-after-free that may result in Remote Code Execution
  • RedisBloom/RedisBloom#1041 Crafted RESTORE payloads in RedisBloom and TDigest may trigger out-of-bounds writes, potentially leading to remote code execution
Bug fixes
  • RedisBloom/RedisBloom#1019 Replicate CF.LOADCHUNK data chunks to prevent silent Cuckoo Filter data loss on failover

v7.4.10

Jul 23, 2026

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

Security fixes
  • A crafted stream RESTORE payload can make two consumers share the same NACK, leading to a use-after-free that may result in Remote Code Execution

v7.2.15

Jul 23, 2026

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

Security fixes
  • A crafted stream RESTORE payload can make two consumers share the same NACK, leading to a use-after-free that may result in Remote Code Execution

v6.2.23

Jul 23, 2026

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

Security fixes
  • A crafted stream RESTORE payload can make two consumers share the same NACK, leading to a use-after-free that may result in Remote Code Execution

v8.10-RC2 (pre-release)

Jul 20, 2026

This is the second Release Candidate of Redis 8.10 in Redis Open Source.

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

Bug fixes (compared to 8.10-RC1)
  • A user can manipulate data read by a connection by injecting \r\n sequences into a Redis error reply
  • A typo in release.h that could cause build failures

v8.10-RC1 (pre-release)

Jul 20, 2026

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

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

Headlines:

Redis 8.10 introduces new features and performance improvements.

Operating systems we test Redis 8.10 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)
  • #15364 Compact hashes - a new hash encoding that reduces memory usage by storing hash field names just once for keys that share a schema
  • #15366 Replication stream compression to reduce bandwidth consumption between primaries and replicas
  • #15364 New command: HIMPORT - high-throughput compact hash bulk insertion
  • #15405 New commands: LMOVEM, BLMOVEM - move multiple elements between lists
  • #14893 New command: SUNIONCARD - get the cardinality of the union of multiple sets
  • #15278 New command: SDIFFCARD - get the cardinality of the difference between sets
  • #15441 New command: BACKUP - node-side implementation for backup and restore based on multi-part AOF (MP-AOF)
  • #15282 XREAD, XREADGROUP - new MAXCOUNT and MAXSIZE arguments to cap the cumulative reply entries and size
  • #15337 New SCRIPT_RUNNER command flag: flag commands that execute scripts or functions
  • #15347 SLOWLOG GET - new reply argument: total argument count
  • RediSearch/RediSearch#9626 New command: FT.ALIASLIST - get all aliases for the index (RED-197340)
  • RediSearch/RediSearch#9052 New Languages Search: Stemmer support for Malay and Tagalog languages (RED-132425)
  • RediSearch/RediSearch#9291 FT.AGGREGATE now supports whole-document fetching using COLLECT, in-group SORTBY/LIMIT, and deduplication control within a single query. (RED-177887)
  • RediSearch/RediSearch#8169, RediSearch/RediSearch#8236, RediSearch/RediSearch#9234, RediSearch/RediSearch#9443 — FT.SEARCH, FT.AGGREGATE, FT.HYBRID: enforce query TIMEOUT more strictly; long-running queries require vertical scaling (multi-threaded execution). (RED-132340)
  • use FAIL when correctness requires rejecting timed-out queries. With search-workers > 0` (the default), the timeout is enforced preemptively
  • use RETURN when best-effort partial results are acceptable and strictness not enforced at post-processing time.
  • use RETURN_STRICT when best-effort partial results are acceptable and strictness enforced on post-processing.
  • New parameter search-global-timeout acting as cap value to timeout setting on query time TIMEOUT param
  • RedisJSON/RedisJSON#1602, RedisJSON/RedisJSON#1603, RedisJSON/RedisJSON#1604, RedisJSON/RedisJSON#1607, RedisJSON/RedisJSON#1618 JSONPath extensions (MOD-16274, MOD-16275):
  • Projection expressions at the top level of a JSONPath query
  • == and != can now compare any literal, including array and object literals
  • Filter negation operator: !
  • size/sizeof and empty operators on string, array, object, and nodelist
  • in and nin operators: membership test on an array and nodelist
  • Operators on numbers: binary -, +, *, /, %, and unary - and +
  • Operator on object: ~
  • length() function on array, object, and string
  • Functions on number: abs(), ceiling(), floor()
  • Functions on string: match(), search()
  • Strings concatenation with concat()
  • Functions on array: first(), last(), index(), append()
  • Aggregation functions on array: min(), max(), avg(), sum(), stddev()
  • Function on object: keys()
  • Function on nodelist: count()
  • Function on nodelist with exactly one node: value()
  • Relations functions on array and nodelist: subsetof(), anyof(), noneof()
  • RedisTimeSeries/RedisTimeSeries#2052 New commands: TS.NRANGE, TS.NREVRANGE - Query a range across multiple time series; group results by timestamp (RED-149232)
  • RedisTimeSeries/RedisTimeSeries#2054 New command: TS.READ - optionally blocking read (RED-132421)
  • RedisTimeSeries/RedisTimeSeries#2090 New command: TS.QUERYLABELS - Get a list of labels and label-values (RED-132355)
  • RedisTimeSeries/RedisTimeSeries#2072 New command: TS.MRANGE, TS.MREVRANGE - new EXCLUDEEMPTY argument to exclude series with no reported samples (RED-132536)
Bug fixes (compared to 8.8.0)
  • #15478 SORT, GEORADIUS, GEORADIUSBYMEMBER, XREAD, XREADGROUP - ACL permission bypass
  • #15329, #15467 - I/O thread busy looping for replica clients
  • #15466 Duplicate KeyMeta restoration in RESTORE-based AOF rewrites
  • #15462 MEMORY USAGE over-reports memory consumption
  • #15447 Full sync under heavy write load
  • #15412 Unit mismatch disables the FAST expire cycle stale trigger
  • #15392 Crash on VRANDMEMBER with LLONG_MIN count
  • #15409 CONFIG SET - crash on of TLS options in non-TLS builds
  • #15371 ACL key-name leak in BCAST client-side caching invalidations
  • #15433 Signed overflow in BITFIELD offset parsing
  • #15446 The select-based event loop backend enqueues registered file descriptors that select() did not mark ready
  • #15309 mem_clients_normal drift when a replica drops its cached master after a failed partial resync
  • #15357 Crash on missing module numeric config
  • #15377 In-progress atomic slot migration tasks keep running on RM_ResetDataset and RM_RdbLoad
  • #15391, #15356, #15436 NULL dereference
  • #15390 Overflow on memory unit conversions
  • #15291 SET does not enforce mutually exclusive NX/XX and IF* options
  • #15322 CONFIG SET does not reject duplicate arguments when using both primary name and alias
  • #15407 LSET out-of-range 64-bit index truncation
  • #15308 Improve RDB load robustness (streams)
  • #15263 Tighter cluster bus parsing for PING, PONG, and MEET packets
  • #15247 Partial crash log on LoongArch architecture
  • #15270 VADD ... CAS SETATTR - wrong attributes count
  • RediSearch/RediSearch#10375 FT.CURSOR READ: crash after the underlying index was dropped (MOD-16703)
  • RediSearch/RediSearch#10408 FT.SEARCH with LIMIT returns too many results in cluster mode over RESP3 (MOD-16767)
  • RediSearch/RediSearch#10420 [FT.INFO](http://ft.info/) could report incorrect values for multi-value TAG fields after document updates (MOD-16745)
  • RediSearch/RediSearch#10488 FT.INFO reports a negative num_records after garbage collection on indexes with an INDEXMISSING field (MOD-16940)
  • RediSearch/RediSearch#10392 Vector search: crash (SIGSEGV) in FP32/L2 distance computation on x86 without AVX support, affecting certain vector dimensions (MOD-16730)
  • RediSearch/RediSearch#9963 Range query returns incomplete results when the lower bound is an excluded empty string (MOD-15897)
  • RediSearch/RediSearch#10066 FT.AGGREGATE .. WITHCOUNT coordinator leaks resources on timeout (MOD-16210)
  • RediSearch/RediSearch#10247 Local FT.HYBRID ignores ON_TIMEOUT RETURN_STRICT and continues execution past the deadline (MOD-16492)
  • RediSearch/RediSearch#10255 Blocked search clients trigger unnecessary query dumps, adding CPU and log overhead (MOD-16518)
  • RediSearch/RediSearch#10151 FT.HYBRID supports EXPLAINSCORE, exposing the fusion method (RRF or LINEAR) (MOD-10044)
  • RedisJSON/RedisJSON#1542, RedisJSON/RedisJSON#1543 Wrong results when evaluating paths with recursive descent (MOD-6722, MOD-14664)
  • RedisJSON/RedisJSON#1554 Any literal that starts with true/false/null is interpreted as true/false/null (MOD-7266)
  • RedisJSON/RedisJSON#1600 Improve RDB load robustness
  • RedisTimeSeries/RedisTimeSeries#2067 TS.INFO - inaccurate memory usage calculation (MOD-6409)
  • RedisTimeSeries/RedisTimeSeries#2036, RedisTimeSeries/RedisTimeSeries#2053, RedisTimeSeries/RedisTimeSeries#2056, #2074 Aggregation fixes (MOD-8187, MOD-16224, MOD-15565)
  • RedisTimeSeries/RedisTimeSeries#2004, RedisTimeSeries/RedisTimeSeries#2051 Improve RDB load robustness
  • RedisTimeSeries/RedisTimeSeries#2104 Issues after cluster topology changes
  • RedisTimeSeries/RedisTimeSeries#2122 Error on the first cross-shard command (TLS)
  • RedisTimeSeries/RedisTimeSeries#2109 TS.INCRBY with TIMESTAMP * replication timestamp drift
  • RedisBloom/RedisBloom#1014 CF.LOADCHUNK partial replication (MOD-16050)
  • RedisBloom/RedisBloom#1026, RedisBloom/RedisBloom#1027 Improve RDB load robustness
Performance and resource utilization improvements (compared to 8.8.0)
  • #15376 Optimize lpSeek() by validating entries only when necessary
  • #15345 Optimize wide HSET/HMSET on a fresh hash with a single batched listpack append
  • #15330 Avoid recomputing allocator fragmentation twice per cron tick (RED-200844)
  • #15259 Trim excess SDS allocation in inline command parsing
  • #15256 rax memory reduction: leaf-inlining for fixed-length-key trees - improves XREADGROUP performance
  • #15397 Improve RESTORE REPLACE performance for new keys
  • #14704 Optimizes an internal memory accounting
  • RediSearch/RediSearch#10246 Write operations block on a read lock held throughout vector range query result collection (MOD-16437)
  • RediSearch/RediSearch#10392 Vector search: Reduce HNSW index memory usage with one-byte per-node locks (MOD-16696).
  • RedisJSON/RedisJSON#1617 JSON - memory object footprint improvements (MOD-16608)
Modules API
  • #15350 RedisModuleEvent_ClusterTopologyChange - cluster topology change
  • #15327 REDISMODULE_SUBEVENT_FORK_CHILD_* - allow multi-threaded modules can quiesce background work before fork()
  • #15373 REDISMODULE_SUBEVENT_CLUSTER_SLOT_MIGRATION_MIGRATE_MODULE_PROPAGATE_END - inject commands after ASM replication stream
  • #15242 RedisModule_AddPostNotificationJobForKey - binds deferred work to a specific key from a keyspace-notification handler
Configuration parameters
  • #15364 Compact hashes:
  • hash-rdb-load-min-template-entries - minimum field count to convert a plain hash to a template during load
  • hash-rdb-load-max-template-entries - maximum field count for load-time conversion
  • hash-rdb-load-template-disassembly-threshold - minimum number of keys a converted template must end up with to be kept
Metrics
  • #15364 Compact hashes:
  • INFO STATS - hash_templates - number of distinct compact hash templates
  • INFO STATS - hash_template_keys - total number of keys backed by a compact hash template
  • INFO MEMORY - used_memory_hash_templates - total memory used by all compact hash templates
  • MEMORY STATS - hash.templates - total memory used by all compact hash templates
  • MEMORY USAGE <key> reports the key’s own + plus its share of a compact hash template cost
CLI tools
  • #15352 Adds --latency-percentiles <p1,p2,...> to --latency / --latency-history: reporting user-chosen percentiles
  • #15262 redis-cli --cluster rebalance - CROSSSLOT error on when using -user without -a
  • #15338 redis-cli --cluster reshard and rebalance now move slots with server-side atomic slot migration

v8.6.4

Jun 4, 2026

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

Bug fixes
  • #15175, RediSearch/RediSearch#9262 Redis fails to start on AArch64
  • #15163 MULTI queue memory incorrect memory accounting
  • #15115 Under-copy in the Lua debugger
  • #15094 Cluster crash when CLIENT KILL unsubscribes SSUBSCRIBE client inside EXEC
  • #14963 XREADGROUP: consumer replication inconsistency
  • #14934 Client output buffer memory tracking not accounting for copy-avoided bulk string references
  • #14970 Sentinel config injection via SENTINEL SET
  • #14982 SCAN commands: integer overflow in COUNT parameter
  • #15073 CLIENT TRACKING: self-overlap returning non-zero loop index
  • #15059 Use-after-free
  • #15037 XINFO STREAM: wrong value in the per-slot memory tracking
  • #15034, #15081 Issues processing corrupt RDB data
  • #15021 HEXPIRE: overflow on fields count
  • #14942 Fix COMMAND GETKEYS for PFMERGE with no source keys
  • #15188 cluster-announce-ip rejecting hostnames (regression)
  • #14667, #14886 Potential TCP stalls/deadlocks
  • RediSearch/RediSearch#9484 Shard crash during background index scan of JSON documents with vector fields on Active-Active (CRDT) databases (MOD-15542)
  • RediSearch/RediSearch#9635 Severe latency spikes and shard unresponsiveness when EXPIRE or EXPIREAT operations run concurrently with queries on large indexes (MOD-14930)

v8.4.4

Jun 4, 2026

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

Bug fixes
  • #15175, RediSearch/RediSearch#9262 Redis fails to start on AArch64
  • #15163 MULTI queue memory incorrect memory accounting
  • #14581 Rare server hang at shutdown
  • #14545 ACL: AOF loading fails if ACL rules are changed and don't allow some commands in MULTI-EXEC
  • #14537 SCAN: restore original filter order (revert change introduced in 8.2)
  • #14816 setModuleEnumConfig() passing prefixed name to module callbacks
  • #14659 ACL: Key-pattern bypass in MSETEX
  • #14623 Streams: XTRIM/XADD with approx mode (~) don’t delete entries for DELREF/ACKED strategies
  • #14552 Streams: Incorrect behavior when using XDELEX ... ACKED after XGROUP DESTROY
  • #14848 Crash during command processing on replicas performing full synchronization
  • #15188 cluster-announce-ip rejecting hostnames (regression)
  • #14667, #14886 Potential TCP stalls/deadlocks
  • RediSearch/RediSearch#9484 Shard crash during background index scan of JSON documents with vector fields on Active-Active (CRDT) databases (MOD-15542)
  • RediSearch/RediSearch#9635 Severe latency spikes and shard unresponsiveness when EXPIRE or EXPIREAT operations run concurrently with queries on large indexes (MOD-14930)

v8.2.7

Jun 4, 2026

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

Bug fixes
  • #15175, RediSearch/RediSearch#9262 Redis fails to start on AArch64
  • #14537 SCAN: restore original filter order (revert change introduced in 8.2)
  • #14816 setModuleEnumConfig() passing prefixed name to module callbacks
  • #14623 Streams: XTRIM/XADD with approx mode (~) don’t delete entries for DELREF/ACKED strategies
  • #14552 Streams: Incorrect behavior when using XDELEX...ACKED after XGROUP DESTROY`
  • #14420 Shutdown blocked client not being properly reset after shutdown cancellation
  • #14415 Potential crash in lookupKey() when executing_client is NULL
  • #14417 CLUSTER FORGET - heap-buffer-overflow
  • #15188 cluster-announce-ip rejecting hostnames (regression)
  • #14667, #14886 Potential TCP stalls/deadlocks
  • RediSearch/RediSearch#9484 Shard crash during background index scan of JSON documents with vector fields on Active-Active (CRDT) databases (MOD-15542)
  • RediSearch/RediSearch#9635 Severe latency spikes and shard unresponsiveness when EXPIRE or EXPIREAT operations run concurrently with queries on large indexes (MOD-14930)

v8.8.0

May 25, 2026

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

Major changes compared to 8.6
  • New data structure: Array (@antirez)
  • Subkey notification for hash fields - field-level notifications
  • INCREX: a window counter rate limiter combining INCR, INCRBY, INCRBYFLOAT, bounds, and expiration (@raffertyyu + Redis team)
  • XNACK: a new streams command - allow consumers to explicitly release pending messages
  • ZUNION, ZINTER, ZUNIONSTORE, ZINTERSTORE: new COUNT aggregator
  • JSON.SET: new FPHA argument to specify the FP type for homogeneous FP arrays
  • TS.RANGE, TS.REVRANGE, TS.MRANGE, TS.MREVRANGE: multiple aggregators in a single command
  • FT.HYBRID KNN clause: new argument to request fewer candidates per shard
  • FT.PROFILE HYBRID: profiling support for FT.HYBRID
  • Performance improvements

For more details, see the 8.8 release blog post.

Binary distributions
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
Bug fixes (compared to 8.8-RC1)
  • #15237 INCREX syntax update
  • #15005 Memory tracking can be enabled at runtime in non-clustered mode
  • RedisTimeSeries/RedisTimeSeries#1930 Cluster topology changes during a multi-shard command are not handled (MOD-14439)
  • RedisBloom/RedisBloom#1007 Memory leak on RDB load (MOD-15418)

v8.8-RC1 (pre-release)

May 14, 2026

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 RESTORE may 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 RESTORE may lead to Remote Code Execution (Time Series)
  • (CVE-2026-25589) Invalid memory access in RESTORE may 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 combining INCR,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 large REDUCE value (RED-170921)
  • VSET: crash on huge allocations (MOD-12678)
  • #15188 cluster-announce-ip rejecting hostnames (regression)
  • #15095 Double free when loading streams with duplicate consumer PEL entries
  • #15124 Issues processing corrupt Streams RDB data
  • #15111 fast_float_strtod rounding mismatch
  • #15190 vecClear reset the logical size without releasing element ownership
  • #15163 MULTI queue memory incorrect memory accounting
  • #15094 Cluster crash when CLIENT KILL unsubscribes SSUBSCRIBE client inside EXEC
  • #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 HYBRID returns an empty reply (MOD-14778)
  • RediSearch/RediSearch#9079 FT.SPELLCHECK treats PARAMS placeholders as literal terms instead of resolving them (MOD-10596)
  • RediSearch/RediSearch#9047 FT.PROFILE output is inconsistent when a profiled value is missing (MOD-10560)
  • RediSearch/RediSearch#9078 FT.CREATE now rejects schema definitions with invalid option combinations at creation time (MOD-14655)
  • RediSearch/RediSearch#9012 PERSIST and HPERSIST notifications are not reflected in index expiration tracking (MOD-14800)
  • RediSearch/RediSearch#9066 Race condition in FT.HYBRID causes intermittent failures under concurrent hybrid query load (MOD-14732)
  • RediSearch/RediSearch#9163 Crash on FT.SEARCH when topology validation fails (for example, some nodes unreachable) (MOD-14475)
  • RediSearch/RediSearch#9031, RediSearch/RediSearch#9473 Coordinator deadlock under mixed FT.SEARCH and FT.AGGREGATE load (MOD-14268)
  • RediSearch/RediSearch#9028 Memory leak when FT.DROPINDEX runs concurrently with in-flight hybrid queries (MOD-14135)
  • RediSearch/RediSearch#9310, RediSearch/RediSearch#9350 FT.CURSOR READ timeout and ON_TIMEOUT FAIL not 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_STRICT returns wrong data on partial results, including SORTBY pipeline (MOD-13617)
  • RediSearch/RediSearch#9382 MAXPREFIXEXPANSION warnings 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.CREATE arguments, allowing corrupt index state on load (MOD-13118)
  • RediSearch/RediSearch#9377 Use-after-move in Indexer_Process causes crash during indexing (MOD-14980)
  • RediSearch/RediSearch#9408 Deadlock between background query and main-thread writer (MOD-15364)
  • RediSearch/RediSearch#9114 FT.PROFILE prints output using wrong iterator type (MOD-14678)
  • RediSearch/RediSearch#9421 Confusing error returned when DEBUG_PARAMS_COUNT is 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, countAll reducers 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 MGET and MSET
  • #14988 Batched prefetch for HGETALL on 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 numRecords no 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 entry
  • slowlog-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_THREADS is 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

Claim your changelog — free