Skip to content

Version 2.4.3

Choose a tag to compare

@fcostaoliveira fcostaoliveira released this 22 Jun 23:11
· 8 commits to 2.4 since this release
13f7a88

What's Changed

Enhancements

  • --transaction now pins a rotation to a single key, in every mode (#485). In --cluster-mode --transaction, every __key__ across a --command rotation now resolves to the same key (taken from the first keyed command's --command-key-pattern), so all keyed commands of a WATCH/MULTI/EXEC unit (e.g. WATCH/GET/SETEX) hash to one slot and one key. Previously each keyed --command drew an independent key: without a hash tag they landed in different slots and the cluster rejected the transaction with CROSSSLOT/MOVED; even with a hash tag the WATCH guarded a different key than the SETEX wrote, making the optimistic lock meaningless. The same per-rotation key reuse was also lifted into the base client, so --transaction is no longer a no-op without --cluster-mode — it now collapses keys against a single endpoint that fronts a slot-enforcing backend (e.g. a Redis Enterprise proxy accessed without --cluster-mode). Requires the literal text around __key__ (including any {tag}) to be identical across keyed commands; --help and the standalone warning updated accordingly.

New Features

  • EXEC aborts broken out from misses under --transaction (#486). An EXEC that returns a null array is an optimistic-lock abort (a watched key changed), not a cache miss. Under --transaction the stats table gains an Aborts/sec column alongside Misses/sec, the per-command warning for EXEC now reads "abort rate" instead of "miss rate", and JSON output gains Aborts/sec for the EXEC command block and Totals. This is a display-only reinterpretation — EXEC nulls still increment the per-command miss counter, so global miss totals are unchanged, and the column/field/wording only change under --transaction; default arbitrary-command output is untouched.

Bug Fixes

  • --realtime-latencies live miss % in --command (arbitrary) mode: the live "miss %" was wired to the SET/GET hit/miss counters, which stay zero for arbitrary commands, so it always showed -. It now sources misses from the arbitrary-command counters, and adds a live "abort %" field under --transaction (#486).

Full Changelog: 2.4.2...2.4.3