Skip to content

Releases: redis/redis

8.8-M02

16 Apr 11:32

Choose a tag to compare

8.8-M02 Pre-release
Pre-release

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: new FPHA argument to specify the FP type for FP homogeneous arrays (MOD-13577)
  • #14892 ZUNION, ZINTER, ZUNIONSTORE, ZINTERSTORE: new COUNT aggregator
  • 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 PFMERGE with no source keys
  • #14888 Hardens safety check in lpSafeToAdd
  • #14748 Ensure sensitive user data is not exposed in logs when hide_user_data_from_log is enabled
  • #14877 INFO KEYSIZES and 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 HELP subcommand (Each command having subcommands needs a HELP subcommand)
  • #14784 RESTORE and SET: expiredkeys counter 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 HOTKEYS results field sampled-command-selected-slots-us to sampled-commands-selected-slots-us
  • #14756 HOTKEYS does not track each command in a MULTI/EXEC block
  • #14749 Fixed HOTKEYS GET RESP3 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.NUMMULTBY don’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.DECRBY create key before validating args (MOD-8167)
  • RedisTimeSeries/RedisTimeSeries#1908 Potential crash on TS.RANGE with aggregation and EMPTY
  • 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 BITOP operations with AVX512
  • #14862 Streams: Filter expired IDMP entries during RDB save and load
  • #14750 SFLUSH can now flush slots partially
  • #14887 SFLUSH skips 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_changed KSN instead of set (MOD-12919)

Modules API

  • #14445 Allow modules to associate metadata with keys
    • RedisModule_CreateKeyMetaClass - define a new key-metadata class
    • RedisModule_ReleaseKeyMetaClass - release a key-metadata class
    • RedisModule_SetModuleMetadata - attach or update metadata to a key
    • RedisModule_GetKeyMeta - get key metadata

Metrics

  • #14896 INFO STATS - global stats for slowlog metrics:
    • slowlog_commands_count - commands written to slowlog
    • slowlog_commands_time_ms_sum - sum of execution times of commands from the slowlog
    • slowlog_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 slowlog
    • slowlog_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)
  • #14841 INFO STATS (global, all clients aggregated):
    • total_client_processing_events: attempts to process client input buffers; does not guarantee any command was actually parsed
    • eventloop_cycles_with_clients_processing: event loop cycles where client input buffers were processed
    • commands_per_parse_batch_sum: cumulative number of commands parsed across all parsing batches for all clients
    • commands_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 buffer
    • commands_per_parse_batch_avg: average commands parsed per batch (sum/cnt). Approximates pipelining depth
  • #14841 CLIENT INFO and CLIENT LIST (per-client):
    • read-events: number of read events for this client
    • parse-batch-cmd-sum: cumulative number of commands parsed across all parsing batches for this client
    • parse-batch-cnt: total number of parsing batches for this client. Divide parse-batch-cmd-sum by 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

24 Mar 12:27

Choose a tag to compare

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 XIDMPRECORD internal command and AOFRW emission to restore stream IDMP state
  • #14816 setModuleEnumConfig() passing prefixed name to module callbacks
  • #14858 Streams: Ensures XADD with IDMP/IDMPAUTO that 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, HGETEX do not validate that FIELDS is specified only once
  • #14897 Streams: IDMP-related bugs

8.4.2

23 Feb 09:44

Choose a tag to compare

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

23 Feb 09:51

Choose a tag to compare

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

23 Feb 09:54

Choose a tag to compare

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

23 Feb 09:57

Choose a tag to compare

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.2.13

23 Feb 10:00

Choose a tag to compare

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.0

10 Feb 14:15

Choose a tag to compare

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: XADD idempotency (at-most-once guarantee) with new IDMPAUTO and IDMP arguments
  • New eviction policies - least recently modified: volatile-lrm and allkeys-lrm
  • Hot keys detection and reporting; new command: HOTKEYS
  • TLS certificate-based automatic client authentication
  • Time series: support NaN values; new aggregators: COUNTNAN and COUNTALL

For more details, see the 8.6 release blog post.

Binary distributions

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-histograms collect 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 XADD with the new IDMP or IDMPAUTO options when using appendonly yes with aof-use-rdb-preamble no (non default).
    This limitation will be removed in the next patch.

8.4.1

08 Feb 07:28

Choose a tag to compare

Update urgency: SECURITY: There are security fixes in the release.

Security fixes

Bug fixes

Performance and resource utilization improvements

Metrics

Configuration parameters

8.2.4

08 Feb 07:19

Choose a tag to compare

Update urgency: SECURITY: There are security fixes in the release.

Security fixes

Bug fixes

Performance and resource utilization improvements

Metrics

Configuration parameters