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
Fetched May 14, 2026
