
# Redis 8.6

What's new in Redis 8.6

Redis 8.6 builds on the foundation of Redis 8.4 with significant enhancements to stream reliability, memory management, and security features.

This release delivers major improvements across multiple areas:

*   Stream idempotency with at-most-once delivery guarantees
*   New eviction policies for least recently modified data
*   Hot key detection and reporting capabilities
*   TLS certificate-based automatic client authentication
*   Enhanced time series support with NaN values and new aggregators
*   Substantial memory reduction for hashes and sorted sets
*   Keys memory size histograms for better monitoring
*   More than 20 performance and resource utilization improvements

Below is a detailed breakdown of these updates.

## Security improvements

Redis 8.6 includes important security and privacy enhancements:

*   **Privacy protection**: Personally identifiable information is now hidden from ACL logs and server logs across Redis core and modules.
*   **ACL security fix**: Fixed key-pattern bypass vulnerability in `MSETEX` command.
*   **Module security**: Addressed out-of-bounds read vulnerability when loading invalid RDB files in RedisBloom.

## New features

### Stream idempotency

Redis 8.6 introduces powerful idempotency features for [Redis Streams](/docs/latest/develop/data-types/streams/) that provide at-most-once delivery guarantees:

*   **IDMPAUTO argument**: Automatically generates idempotent identifiers for `XADD` operations.
*   **IDMP argument**: Allows manual specification of idempotent identifiers.

These features prevent duplicate entries in streams, making Redis Streams more reliable for critical data processing pipelines where duplicate processing could cause issues.

### Enhanced memory management

Redis 8.6 introduces new [eviction policies](../../reference/eviction/index.md) that provide more granular control over memory management:

*   **volatile-lrm**: Evicts keys with expiration times based on least recently modified criteria.
*   **allkeys-lrm**: Evicts any keys based on least recently modified criteria.

These policies complement existing LRU (Least Recently Used) policies by focusing on modification patterns rather than access patterns, providing better control for write-heavy workloads.

### Hot key detection

The new [`HOTKEYS`](/docs/latest/commands/hotkeys/) commands enable real-time detection and reporting of frequently accessed keys. This feature helps identify performance bottlenecks and optimize data distribution in clustered environments.

### TLS certificate-based authentication

Redis 8.6 introduces automatic client authentication using TLS certificates. This feature streamlines secure connections by automatically mapping TLS certificates to Redis users, reducing the need for password-based authentication in certificate-enabled environments.

### Enhanced time series capabilities

Redis 8.6 extends [time series](/docs/latest/develop/data-types/timeseries/) functionality with:

*   **NaN value support**: Time series can now store and process Not-a-Number values for incomplete or invalid data points.
*   **New aggregators**: `COUNTNAN` and `COUNTALL` aggregators provide better analytics for datasets containing NaN values.

### Memory monitoring and analytics

Redis 8.6 introduces advanced memory monitoring capabilities:

*   **Keys memory size histograms**: Collect detailed memory consumption histograms per data type to better understand memory usage patterns.
*   **Per-slot statistics**: New cluster slot statistics provide insights into resource consumption across cluster nodes.

## Improvements

Redis 8.6 delivers substantial performance improvements across core operations and data structures.

### Performance optimizations

*   **Reply optimization**: Copy-avoidance path reduces memory copies for bulk string replies and optimized list node allocation.
*   **Data structure improvements**: Hash and sorted set operations benefit from unified field/value and score/value structures, delivering substantial memory reduction.
*   **Iterator optimization**: Improved listpack iterator performance for hash field operations.
*   **Command optimization**: Enhanced `ZRANK`, `XREADGROUP CLAIM` performance and optimized set commands with expiration.
*   **Prefetching enhancements**: Improved prefetching logic and sizing algorithms.
*   **Hardware utilization**: ARM AArch64 systems now utilize hardware clocks by default for better performance.
*   **ACL optimization**: Optimized user ACL permission verification for faster access control.
*   **Vector operations**: Enhanced vector set operations with optimized distance calculations for Intel, AMD, and ARM architectures.
*   **System efficiency**: Reduced per-command syscalls by reusing cached time when hardware monotonic clock is available.

### Replication improvements

*   **Diskless replication**: RDB compression is now disabled during diskless replication to improve transfer speeds.
*   **Configuration flexibility**: New `flushdb` option for `repl-diskless-load` provides better control over dataset handling during replication.

## Configuration enhancements

Redis 8.6 introduces new configuration parameters that provide greater control over system behavior:

*   **Stream idempotency**: `stream-idmp-duration` and `stream-idmp-maxsize` control default settings for idempotent stream production.
*   **TLS authentication**: `tls-auth-clients-user` enables certificate-based automatic client authentication.
*   **Memory policies**: Support for new `volatile-lrm` and `allkeys-lrm` eviction policies.
*   **Cluster monitoring**: `cluster-slot-stats-enabled` enables per-slot resource consumption statistics collection.
*   **Memory analytics**: `key-memory-histograms` enables collection of memory consumption histograms per data type.

## Modules API enhancements

Redis 8.6 extends the modules API with new key metadata capabilities:

*   **RM\_CreateKeyMetaClass**: Define new key-metadata classes for custom data organization.
*   **RM\_ReleaseKeyMetaClass**: Release key-metadata classes when no longer needed.
*   **RM\_SetKeyMeta**: Attach or update metadata values for keys under specific metadata classes.
*   **RM\_GetKeyMeta**: Retrieve metadata values for keys under specific metadata classes.

These APIs enable module developers to associate custom metadata with Redis keys, opening new possibilities for advanced data management and analytics.

## Enhanced monitoring and metrics

Redis 8.6 introduces new metrics that provide deeper insights into system behavior:

*   **Memory distribution metrics**: New metrics (`db0_distrib_lists_sizes`, `db0_distrib_sets_sizes`, `db0_distrib_hashes_sizes`, `db0_distrib_zsets_sizes`) provide detailed memory usage distribution across different data types.
*   **TLS authentication metrics**: `acl_access_denied_tls_cert` tracks failed TLS certificate-based authentication attempts for security monitoring.

## Component versions

Redis 8.6 continues the unified distribution approach, delivering all functionality in a single Redis Open Source package without separate modules. This includes:

*   **RedisTimeSeries**: Enhanced with NaN value support and new aggregation functions.
*   **RedisBloom**: Improved security with RDB loading fixes and atomic slot migration support.
*   **RedisJSON**: Better privacy protection and enhanced atomic slot migration capabilities.

## Known limitations

When using Redis 8.6, be aware of these current limitations:

*   **Redis Search**: During load rebalancing operations (such as Atomic Slot Migration), cursors may miss some results due to data movement between nodes.
    
*   **Stream idempotency**: Avoid using `XADD` with the new `IDMP` or `IDMPAUTO` options when using `appendonly yes` with `aof-use-rdb-preamble no` (non-default configuration). This limitation will be removed in the next patch release.
    
*   [Redis 8.6](/docs/latest/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.6-release-notes/)
    

## On this page
