What valkey-io/valkey shipped
Written by FoxPlug from the repository's own releases; not affiliated with Valkey. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/valkey-io/valkey; Valkey did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- Valkey 9.2.0-rc2 was released with a new DELEX command that conditionally deletes a string key when its value matches or differs from a given value. Release
- Inbound cluster bus packets are now capped at 16MB and rejected as soon as the header is read, instead of growing the receive buffer toward a claimed 4GB body. Pull request #5065
- XADD that creates a new stream node no longer leaves a dangling pointer to a freed listpack, fixing undefined behavior on later XRANGE, XREVRANGE and XINFO STREAM FULL reads. Pull request #4711
- XINFO GROUPS and XINFO STREAM FULL no longer report too-high lag after XTRIM or a trimming XADD removes entries a group has not read. Pull request #4983
- Sorted set operations no longer rewrite keyspace set members during lookups, which could write a set source into the RDB with members replaced by empty strings during a forkless save. Pull request #5110
- Random picks on a shrinking hashtable from ZRANDMEMBER, SRANDMEMBER, SPOP and HRANDFIELD now rehash in proportion to the scan work instead of one step per pick. Pull request #5170
- PFMERGE and PFADD no longer abort the server when hll-sparse-max-bytes is 31 or less and the sparse HLL is stored as an SDS_TYPE_5 string. Pull request #5138
- The background iteration now closes its MULTI when no replication work is pending instead of leaving the iterator inside an open MULTI. Pull request #5316
- Lm_asprintf in the Lua module now returns an empty string when vsnprintf fails instead of handing back an unwritten allocation. Pull request #5122
- The n keyspace event flag is kept when A is set, so CONFIG REWRITE no longer drops new key notifications from the saved configuration after a restart. Pull request #5199
Why it matters
This week landed a second release candidate of 9.2.0 alongside fixes for several cases where the server could crash, hang or return wrong data: stream nodes with freed listpacks, sparse HyperLogLog aborts, and oversized cluster bus packets. It also corrected reporting and configuration problems that affect everyday operation, such as overstated stream lag, lost new key notification flags after a rewrite, and random sampling costs on shrinking hashtables.
Changelog entry
- Release 9.2.0-rc2, including the new DELEX command for conditional string key deletion. Release
- Cap inbound cluster bus packets at 16MB and reject oversized headers on read. Pull request #5065
- Fix a dangling listpack pointer left by XADD when it creates a new stream node. Pull request #4711
- Fix too-high XINFO GROUPS and XINFO STREAM FULL lag after XTRIM or a trimming XADD. Pull request #4983
- Stop zset operations from rewriting keyspace set members during lookups. Pull request #5110
- Rehash in proportion to scan work when sampling a shrinking hashtable. Pull request #5170
- Fix hllSparseSet aborting on SDS_TYPE_5 strings when deltalen is zero. Pull request #5138
- Reject sparse HyperLogLogs that end in a truncated XZERO opcode. Pull request #5124
- Close the background iteration MULTI when no replication work is pending. Pull request #5316
- Return an empty string from
lm_asprintfwhen vsnprintf fails. Pull request #5122 - Keep the n keyspace event flag when A is set. Pull request #5199
- Validate slot import ranges in valkey-check-rdb when checking slot RDB files. Pull request #4470
Valkey 9.2.0-rc2 is out with the new DELEX command. This week also capped cluster bus packets at 16MB, fixed a dangling listpack pointer when XADD creates a stream node, corrected stream lag after XTRIM, and stopped sorted set lookups from corrupting keyspace set members during f
Valkey 9.2.0-rc2 is available, adding the DELEX command to conditionally delete a string key when its value matches or differs from a given value. This week also brought stability fixes across the server: inbound cluster bus packets are now capped at 16MB instead of buffering toward a claimed 4GB, XADD that creates a new stream node no longer leaves a dangling pointer to a freed listpack, and XINFO GROUPS no longer reports too-high lag after XTRIM removes unread entries. Sorted set operations no longer rewrite keyspace set members during lookups in forkless saves, sparse HyperLogLog merges no longer abort the server at small hll-sparse-max-bytes values, and random picks on a shrinking hashtable now rehash in proportion to the scan work.
Week of October 26, 2026
What shipped
- HELLO, AUTH and MIGRATE now redact their credentials before argument validation, so rejected commands no longer expose passwords to MONITOR clients or the command log. Pull request #5180
- Cleared a stale cross-slot flag so one script calling a cross-slot command no longer makes later calls from any script fail until restart. Pull request #5191
- Allowed a primary client to be blocked with BLOCKED_INUSE during a forkless save, fixing a replica crash when a write arrives for a key the iterator cannot clone. Pull request #5206
- Background iterators are now torn down when a replica swaps in a primary's RDB during swapdb-mode full sync, removing a use-after-free race with lazyfree. Pull request #5082
- A forked SCRIPT DEBUG session no longer postpones automatic saves and AOF rewrites, so RDB snapshots and AOF compaction resume while it is open. Pull request #5153
- FUNCTION RESTORE now applies the same library load timeout as FUNCTION LOAD, so a library whose top-level code never returns can no longer block the server indefinitely. Pull request #5181
- Valkey-cli on a RESP3 connection now skips top-level attributes instead of exiting with an unknown reply type before printing the actual reply. Pull request #5186
- Key comparison and eviction pool code now keep sds lengths in
size_t, fixing reads past 2 GiB strings that could store equal large members twice. Pull request #5133 - XADD now checks total element size before creating a stream, so an oversized XADD on a missing key no longer leaves an empty key behind. Pull request #5178
- Ping extension values that nodes.conf cannot load are now ignored, preventing a node from writing an unloadable nodes.conf and panicking on every restart. Pull request #5137
Why it matters
This week's changes fix several crashes and hangs that affect running deployments: a cluster bus peer could make a node unwritable with a single packet, debug and function commands could stop saves or block the server, and credential redaction closes a leak of passwords to monitoring clients. Several fixes also address memory-safety problems with very large strings and buffers, and tooling fixes make valkey-cli and valkey-check-rdb more reliable.
Changelog entry
- Redact HELLO, AUTH and MIGRATE credentials before validating arguments so rejected commands do not leak passwords. Pull request #5180
- Clear stale cross-slot flag before computing a command's slot in cluster mode. Pull request #5191
- Allow primary client to be blocked with BLOCKED_INUSE during forkless save. Pull request #5206
- Tear down background iterators when swapping in a primary's RDB. Pull request #5082
- Do not let forked script debug sessions postpone automatic saves and AOF rewrites. Pull request #5153
- Apply the library load timeout to FUNCTION RESTORE. Pull request #5181
- Skip RESP3 attributes when reading replies in valkey-cli. Pull request #5186
- Keep sds lengths in
size_twhen comparing and caching keys. Pull request #5133 - Check XADD element size before creating the stream. Pull request #5178
- Ignore ping extension values that nodes.conf cannot load. Pull request #5137
- Allow server.log() during FUNCTION LOAD. Pull request #5114
- Print usage when valkey-check-rdb --output has no file name. Pull request #5135
This week: HELLO/AUTH/MIGRATE credentials redacted before validation, one script's cross-slot call no longer breaks later script calls, FUNCTION RESTORE gets the load timeout, and SCRIPT DEBUG stops postponing saves. Several size-overflow and crash fixes across networking, cluste
This week's changes to the project fix several crashes and hangs in running deployments. HELLO, AUTH and MIGRATE now redact credentials before argument validation, so rejected commands no longer show passwords to MONITOR clients or in the command log. A script calling a cross-slot command no longer makes later script calls fail until restart, a replica no longer crashes when the primary writes a key in use by a forkless save, and FUNCTION RESTORE now applies the library load timeout. A forked SCRIPT DEBUG session no longer postpones automatic saves and AOF rewrites, and several fixes address large-string length overflow and buffer accounting in networking, hashing and tooling. valkey-cli now handles RESP3 attributes, and valkey-check-rdb no longer segfaults on empty selected DBs.
Week of October 19, 2026
What shipped
- Slot migration snapshots now send SELECT at the end, so with multiple cluster databases the target no longer stays on the last database of the snapshot when streamed writes arrive. Pull request #4952
- Evictions made on an import target during atomic slot migration are now replicated and the replica database selection is fixed. Pull request #4920
- Quicklist read-only iteration on LZF-compressed nodes no longer mutates the node in place, avoiding the previous decompress, free and recompress cycle. Pull request #4782
- Active defrag no longer crashes when a database keyspace is replaced mid-stage, with deferred keys cleared at the start of every stage. Pull request #4968
- The cluster no longer holds descriptors on both rename source and destination when publishing nodes.conf. Pull request #4489
- ZINTER and ZINTERSTORE now return the same score for a weighted 0 times infinity term regardless of input order. Pull request #4997
- HGETALL, HKEYS and HVALS use exact-length reply headers and fused bulk replies to speed up fetching moderately sized hashes. Pull request #4417
- Per-thread memory usage counters are padded to avoid false sharing between threads. Pull request #4107
- The earliest timer is cached so usUntilEarliestTimer lookup is constant time instead of scanning the full timer list each loop iteration. Pull request #4354
- Error replies logged by afterErrorReply are redacted when hide-user-data-from-log is enabled. Pull request #4815
Why it matters
This week brings correctness fixes for cluster slot migration, sorted set range and score parsing, and hash field expiry, plus reply-path and timer performance work. Several changes make behavior consistent between primary and replica, which matters for users relying on replication and rolling upgrades.
Changelog entry
- Send SELECT at the end of the slot migration snapshot so multi-database cluster migrations keep the correct database for streamed writes. Pull request #4952
- Replicate evictions made on an import target and fix replica database selection during atomic slot migration. Pull request #4920
- Make quicklist read-only iteration non-mutating on compressed nodes. Pull request #4782
- Fix a crash when a database keyspace is replaced mid-stage during active defrag. Pull request #4968
- Hold no descriptor on nodes.conf when rename publishes it. Pull request #4489
- Fix ZINTER and ZINTERSTORE score when a weighted term is 0 times infinity. Pull request #4997
- Speed up HGETALL, HKEYS and HVALS with exact-length headers and fused bulk replies. Pull request #4417
- Fix false sharing in per-thread memory usage counters. Pull request #4107
- Cache the earliest timer for constant-time usUntilEarliestTimer lookup. Pull request #4354
- Redact logged error replies when hide-user-data-from-log is set. Pull request #4815
- Reject bare open parenthesis and empty strings in sorted set score ranges. Pull request #4054
- Restore hex float parsing for sorted set scores to keep rolling upgrades consistent. Pull request #4875
This week: slot migration snapshots end with SELECT, import-target evictions are replicated, quicklist read-only iteration stops mutating compressed nodes, defrag survives mid-stage keyspace replacement, and HGETALL/HKEYS/HVALS get faster replies.
This week in Valkey: slot migration snapshots now end with SELECT so multi-database cluster migrations land on the right database, and evictions on an import target during atomic slot migration are replicated. Active defrag no longer crashes when a keyspace is replaced mid-stage, quicklist read-only iteration stops mutating compressed nodes, and cluster config publishing no longer holds descriptors on both rename ends. On the command side, ZINTER/ZINTERSTORE handle weighted zero-times-infinity terms consistently, HGETALL, HKEYS and HVALS get faster replies, and error text logged after an error reply is redacted when hide-user-data-from-log is set.
Week of October 12, 2026
What shipped
- INCREX gained LBOUND, UBOUND, SATURATE, ENX and PERSIST options, with out-of-bounds results rejected without modifying the key. Pull request #4679
- The B+tree sorted set lex seek was fixed, along with NaN score bounds and a root prefix leak. Pull request #4644
- ZPOP on B+tree encoded sorted sets now detaches an edge item by following edge child pointers instead of comparing score and member keys. Pull request #4852
- RESTORE payloads declaring an overflowing string length no longer trip an sds assertion that aborted the server. Pull request #4733
- RDB and replication failures for certain listpack entry lengths were fixed. Pull request #4819
- XACKDEL KEEPREF now replies consistently for an acknowledged entry whose stream item is already gone. Pull request #4843
- HDEL, HGETDEL, HPERSIST and HEXPIRE no longer propagate expired hash fields to replicas. Pull request #4772
- ValkeyModule_ScanKey now skips expired listpack hash fields, matching HGETALL and HSCAN. Pull request #4885
- A crash and wrong return values in the hash stringRef module API path were fixed. Pull request #4504
- Dead client IDs are now reclaimed from the tracking table used for non-BCAST client-side caching. Pull request #4190
Why it matters
This week brings fixes across replication, persistence and module APIs: RDB and replication no longer fail on certain listpack entry lengths, RESTORE no longer aborts on a corrupt length, and expired hash fields stop propagating to replicas. INCREX gains bounds and saturation options, and several module and sorted set paths are more reliable.
Changelog entry
- INCREX: add LBOUND, UBOUND, SATURATE, ENX and PERSIST options. Pull request #4679
- Fix B+tree sorted set lex seek, NaN score bounds and a root prefix leak. Pull request #4644
- Optimize B+tree ZPOP by detaching edge items without key comparisons. Pull request #4852
- Fix sds overflow assertion on RESTORE payload with an overflowing string length. Pull request #4733
- Fix RDB and replication failures for certain listpack entry lengths. Pull request #4819
- Fix XACKDEL KEEPREF reply for an acked entry whose stream item is gone. Pull request #4843
- Avoid propagating expired hash fields from HDEL, HGETDEL, HPERSIST and HEXPIRE. Pull request #4772
- Skip expired listpack hash fields in ValkeyModule_ScanKey. Pull request #4885
- Fix crash and wrong return values in the hash stringRef module API. Pull request #4504
- Reclaim dead client IDs from the tracking table. Pull request #4190
- Allow vset to track size pre-emptively, making vsetSize and hashTypeVolatileCount O. Pull request #4829
- Aof: write directly to server.aof_buf in feedAppendOnlyFile. Pull request #3496
This week: INCREX gains LBOUND, UBOUND, SATURATE, ENX and PERSIST. RDB and replication fixed for certain listpack entry lengths. RESTORE no longer aborts on an overflowing string length. Expired hash fields no longer propagate to replicas.
This week's changes to Valkey include new INCREX options: LBOUND, UBOUND, SATURATE, ENX and PERSIST, with out-of-bounds results rejected without modifying the key. RDB and replication failures for certain listpack entry lengths were fixed, and a RESTORE payload with an overflowing string length no longer aborts the server. HDEL, HGETDEL, HPERSIST and HEXPIRE no longer propagate expired hash fields to replicas, and the B+tree sorted set lex seek, NaN score bounds and a root prefix leak were fixed. Module users get a fix for expired listpack hash fields in ValkeyModule_ScanKey and for a crash in the hash stringRef API.
Week of October 5, 2026
What shipped
- The INFO command was optimized with pre-allocation for the result string, improving INFO ALL performance by around 5% on Linux and Mac. Pull request #3413
- Replica flow control was restored when I/O threads are enabled, keeping a replica's connection to its primary on the main thread and adding an end-to-end replication test that sends 4 MiB through a primary and replica pair. Pull request #4765
- A flaky test that modifies new keys during forkless bgsave was deflaked by addressing a timing window where the followup write loop could exceed the bgsave capture window. Pull request #4789
- Raw TSC is now skipped when the kernel clocksource is not tsc, so VMs using kvm-clock, xen or
hyperv_timeruseclock_gettimeeven with a healthy TSC. Pull request #4707 - The CMake gtest build now links on macOS by renaming symbols inside object files and using the C compiler instead of llc to turn LLVM bitcode into objects. Pull request #4657
- The geohash code was cleaned up by removing the unused geohashDecodeWGS84 function, which was unreachable through any code path. Pull request #4787
- Rain Valentine was added as a committer. Pull request #4836
- An AI tooling policy was added to CONTRIBUTING.md, stating that contributors own the quality of what they submit and that there are no restrictions on tooling as long as contributions meet the project's quality bar. Pull request #4844
Why it matters
This week brought measurable performance work on the INFO command and clock handling, plus a restored flow control path for replicas running with I/O threads. Contributors also got a clearer benchmark tool and a documented quality bar for tooling, while flaky test and macOS build issues were resolved.
Changelog entry
- Optimize INFO command with SDS pre-allocation, improving INFO ALL performance by around 5% on Linux and Mac. Pull request #3413
- Skip raw TSC when the kernel clocksource is not tsc, using
clock_gettimein VMs that select kvm-clock, xen orhyperv_timer. Pull request #4707 - Remove the unused and unreachable geohashDecodeWGS84 function. Pull request #4787
- Restore replica flow control with I/O threads enabled and add an end-to-end replication test sending 4 MiB. Pull request #4765
- Add an AI tooling policy to CONTRIBUTING.md. Pull request #4844
- Deflake the test that modifies new keys during forkless bgsave. Pull request #4789
- Add Rain Valentine as a committer. Pull request #4836
- Support arbitrary commands and mixed loads in the on-demand benchmark. Pull request #4537
- Fix the Make and CMake gtest build linking on macOS. Pull request #4657
This week: INFO ALL is around 5% faster, replica flow control works again with I/O threads, the on-demand benchmark supports arbitrary commands and mixed loads, and the gtest build links on macOS.
This week in the project: the INFO command gained pre-allocation that improves INFO ALL performance by around 5% on Linux and Mac. Replica flow control was restored when I/O threads are enabled, with an end-to-end replication test that sends 4 MiB through a primary and replica pair. The on-demand benchmark now supports arbitrary commands and mixed loads, the CMake gtest build links on macOS, and a flaky forkless bgsave test was deflaked. Rain Valentine was added as a committer, and an AI tooling policy was added to CONTRIBUTING.md.
Week of September 28, 2026
What shipped
- Fixed valkey-cli --cluster to correctly parse bracketed IPv6 addresses in the standard [::1]:7000 format. Pull request #4800
- Fixed a crash where module timer callbacks could bypass client pause checks and trigger assertions during write pauses. Pull request #3645
- Fixed slot resolution for module commands and arbitrary-key commands that access keys outside their declared slot. Pull request #4424
- Added support for streaming-compressed RDB preambles in AOF, allowing replicas to reuse compressed full-sync RDBs as AOF bases. Pull request #4754
- Fixed inline protocol parser that would stall when receiving commands with embedded null bytes. Pull request #4759
- Fixed memory leak in IO thread shutdown where worker cleanup handlers were not executed during normal shutdown. Pull request #4710
- Bounded the time spent evicting keys from the client tracking table to prevent excessive CPU usage. Pull request #4775
- Fixed valkey-benchmark spinning on write-would-block conditions that starved reply processing and timers. Pull request #4567
- Treated list compression read commands as writes during background iteration and fixed crash on EXEC without MULTI. Pull request #4632
- Corrected command summaries for HEXPIRE family to accurately describe that they expire individual hash fields. Pull request #4783
Why it matters
This week addresses critical stability issues including server crashes, memory leaks, and protocol parsing bugs. Improvements to cluster CLI handling and replication compression also enhance operational reliability and efficiency for users running Valkey at scale.
Changelog entry
- Fixed valkey-cli --cluster IPv6 address parsing for bracketed format Pull request #4800
- Fixed crash when module writes bypass client pause checks Pull request #3645
- Fixed slot resolution for module and arbitrary-key commands Pull request #4424
- Corrected HEXPIRE family command summaries Pull request #4783
- Fixed IO thread shutdown cleanup leak Pull request #4710
- Bounded time spent evicting keys from tracking table Pull request #4775
- Fixed valkey-benchmark spinning on would-block writes Pull request #4567
- Added streaming-compressed RDB preamble support in AOF Pull request #4754
- Treated list compression read commands as writes during background iteration Pull request #4632
- Fixed inline protocol parser stalling on embedded null bytes Pull request #4759
This week: IPv6 cluster CLI parsing fixed, module write pause crash resolved, slot resolution corrected for module commands, streaming compression in AOF enabled, and protocol parser stalling bug fixed.
Valkey shipped important stability fixes this week. We resolved a server crash triggered by module writes during client pause, fixed slot resolution for module commands, corrected IPv6 cluster CLI parsing, and eliminated a protocol parser stall on embedded null bytes. Additionally, we enabled streaming-compressed RDB support in AOF replication and fixed memory leaks in IO thread shutdown. These changes improve reliability for operators and module developers.
Week of September 21, 2026
What shipped
- DELEX command added with conditional predicates for strings, providing O deletion with IFEQ support. Pull request #4607
- ZSTD compression support added for streaming compression in both replication and RDB compression. Pull request #3798
- Rdbcompression and repl-compression decoupled so disk format and wire format compression can be configured independently. Pull request #4749
- Sorted set score updates in listpack encoding optimized with in-place fast path when member position unchanged. Pull request #3491
- Valkey-benchmark maximum latency histogram bucket increased from 3 seconds to 60 seconds. Pull request #3157
- Valkey-check-aof fixed to recognize both VALKEY and REDIS RDB file signatures for proper classification. Pull request #4739
- GeohashGetLatDistance() fixed to handle equal latitudes correctly in GEOSEARCH operations. Pull request #4777
- Throttle-repl test deadlock fixed resolving timeout issues with throttled writer socket. Pull request #4778
- Commands.def validation moved to independent CI job for earlier detection of stale definitions. Pull request #4753
- TTL expiration and eviction tests deflaked for forkless bgsave across different build configurations. Pull request #4673
Why it matters
This week included foundational compression improvements with ZSTD support and independent compression configuration, a new DELEX command for conditional string deletion, and optimization of sorted set operations in listpack encoding. Multiple test reliability fixes and tooling improvements ensure better coverage detection and reduced false timeouts across different builds.
Changelog entry
- DELEX command: conditional string deletion with IFEQ predicate support Pull request #4607
- ZSTD compression support for replication and RDB compression Pull request #3798
- Decouple rdbcompression from repl-compression for independent configuration Pull request #4749
- Optimize zset score updates in listpack encoding with in-place fast path Pull request #3491
- Increase valkey-benchmark max latency histogram bucket to 60 seconds Pull request #3157
- Fix valkey-check-aof to recognize VALKEY and REDIS RDB signatures Pull request #4739
- Fix geohashGetLatDistance for equal latitudes in GEOSEARCH Pull request #4777
- Run commands.def validation in independent CI job Pull request #4753
- Deflake TTL expiration and eviction tests for forkless bgsave Pull request #4673
- Fix throttle-repl test deadlock on throttled writer socket Pull request #4778
Valkey updates: ZSTD streaming compression support, DELEX conditional string deletion command, decoupled compression modes for RDB and replication, sorted set listpack optimization, improved latency measurement, and test reliability fixes.
Valkey this week shipped significant improvements across compression, commands, and performance. ZSTD compression now available for replication and RDB compression with configurable trade-offs. New DELEX command enables conditional string deletion with O performance. Compression configuration is now decoupled between disk format and replication wire format. Sorted set score updates optimized in listpack encoding. Latency measurement improved to 60-second max bucket. Multiple test reliability fixes reduce flakiness across build configurations.
Week of September 14, 2026
What shipped
- Valkey 9.2.0-rc1 released with active expiration now incrementing the dirty counter, affecting save point and BGSAVE frequency. Release
- Path Hash data type added as a new binary-safe structure backed by a radix tree for exact lookup and prefix matching. Pull request #4506
- Streaming compression support for replication implemented with LZ4 codec for per-replica compression in steady-state replication. Pull request #3853
- ACL role support added to allow defining reusable named permission policies that can be assigned to multiple users. Pull request #3967
- EXEC command enhanced with IFEQ, IFNE, XX, and NX options for optimistic-locking workflows without WATCH. Pull request #4019
- INCREX command introduced supporting BYFLOAT, BYINT increments with expiration and condition options. Pull request #3253
- Fixed execGetKeys() dropping the first 256 keys past the static buffer in COMMAND GETKEYS EXEC. Pull request #4712
- Fixed btree sorted-set backend bugs causing wrong results and silent data loss for score range queries. Pull request #4554
- Fixed wire format for cluster failover NACK to echo the rejected request epoch preventing old NAKs affecting current elections. Pull request #4654
- Fixed OPENSSL_PREFIX persistence across builds so custom OpenSSL installations are remembered between make invocations. Pull request #4738
Why it matters
The 9.2.0-rc1 release brings several major features including Path Hash and streaming compression, alongside numerous bug fixes affecting cluster operations, sorted sets, and command processing. ACL roles and enhanced EXEC options provide operators and developers with more powerful tooling for access control and transaction workflows.
Changelog entry
- Release 9.2.0-rc1 with active expiration now incrementing dirty counter for more frequent save points Release
- Add Path Hash data type backed by radix tree for exact lookup and longest-prefix matching Pull request #4506
- Add streaming compression support for replication with LZ4 codec Pull request #3853
- Add ACL role support for named, reusable permission policies Pull request #3967
- Add IFEQ, IFNE, XX, NX options to EXEC for optimistic locking workflows Pull request #4019
- Add INCREX command with BYFLOAT, BYINT, EX, PX, EXAT, PXAT, NX, XX support Pull request #3253
- Fix execGetKeys() dropping first 256 keys in COMMAND GETKEYS EXEC Pull request #4712
- Fix btree sorted-set backend bugs causing wrong results and silent data loss for score ranges Pull request #4554
- Fix cluster failover NACK wire format to include rejected request epoch Pull request #4654
- Fix expired hash fields being deleted during listpack-to-hashtable conversion Pull request #4704
Valkey 9.2.0-rc1 is out. New Path Hash data type, streaming compression for replication, ACL roles, and enhanced EXEC command for optimistic locking. Plus fixes for sorted sets, cluster failover, and more.
Valkey 9.2.0-rc1 is released. This candidate includes significant additions: Path Hash data type for radix tree operations, streaming compression for replication with LZ4 codec, and ACL role support for reusable permission policies. The EXEC command gains optimistic-locking capabilities via IFEQ/IFNE/XX/NX options. Several critical fixes address sorted-set data loss, cluster failover epoch handling, and command key extraction. Developers and operators gain more powerful tools for performance, security, and distributed operations.