diff --git a/content/develop/whats-new/8-4.md b/content/develop/whats-new/8-4.md new file mode 100644 index 0000000000..3771d519e1 --- /dev/null +++ b/content/develop/whats-new/8-4.md @@ -0,0 +1,106 @@ +--- +title: Redis 8.4 +alwaysopen: false +categories: +- docs +- operate +- rs +- rc +description: What's new in Redis 8.4 RC1 +linkTitle: What's new in Redis 8.4 RC1 +weight: 3 +--- + +Redis 8.4 builds on the foundation of Redis 8.2 with significant enhancements to cluster operations, string manipulation, and stream processing capabilities. + +This release delivers major improvements across multiple areas: +- Atomic cluster slot migration for zero-downtime operations +- Enhanced string operations with atomic compare-and-set functionality +- Advanced stream processing with idle entry claiming +- Hybrid search capabilities combining multiple ranking algorithms +- High-performance SIMD optimizations for bit operations and vector processing +- Improved JSON handling with better memory efficiency + +Below is a detailed breakdown of these updates. + +## New features + +### Atomic cluster operations + +Redis 8.4 introduces the [`CLUSTER MIGRATION`]({{< relref "/commands/cluster-migration/" >}}) command, which enables atomic slot migration between cluster nodes. This command ensures zero-downtime cluster operations by moving slots and their associated data in a single atomic operation, eliminating the brief unavailability window that previously occurred during slot migrations. + +### Enhanced string operations + +Redis 8.4 extends string manipulation capabilities with powerful new commands that enable atomic compare-and-set operations: + +- [`DELEX`]({{< relref "/commands/delex/" >}}): Delete a key only if its value matches a specified condition. +- [`DIGEST`]({{< relref "/commands/digest/" >}}): Generate cryptographic digests of key values for integrity verification. + +The [`SET`]({{< relref "/commands/set/" >}}) command now supports atomic compare-and-set and compare-and-delete operations through new extensions, enabling you to implement lock-free data structures and optimistic concurrency control patterns. + +### Multi-key expiration management + +The new [`MSETEX`]({{< relref "/commands/msetex/" >}}) command allows you to set multiple keys and update their expiration times in a single atomic operation. This simplifies batch operations where you need to maintain consistent TTL values across related keys. + +### Advanced stream processing + +Redis 8.4 enhances stream processing with the `CLAIM min-idle-time` option for [`XREADGROUP`]({{< relref "/commands/xreadgroup/" >}}). This feature enables consumer groups to automatically claim and process both idle pending entries and new incoming entries in a single operation, simplifying consumer group management and improving processing efficiency. + +### Hybrid search capabilities + +The new `FT.HYBRID` command introduces hybrid queries that combine multiple ranking algorithms using Reciprocal Rank Fusion (RRF) and linear combination methods. This enables you to create sophisticated search experiences that leverage both semantic similarity and traditional text matching. + +### Enhanced AOF reliability + +Redis 8.4 introduces auto-repair options for corrupted AOF (Append Only File) tails during startup. The new `aof-load-corrupt-tail-max-size` configuration parameter allows Redis to automatically repair minor AOF corruption, improving system resilience and reducing manual intervention requirements. + +## Improvements + +Redis 8.4 delivers substantial performance improvements through advanced SIMD optimizations and enhanced algorithms. + +### Performance optimizations + +- **BITCOUNT**: Enhanced with AVX2 and AVX512 popcount implementations for x86 architectures, plus Arm Neon SIMD vectorization for ARM processors. +- **HyperLogLog**: Optimized with branchless comparisons and Arm Neon SIMD vectorization for improved cardinality estimation performance. +- **Vector operations**: `VADD` and `VSIM` commands benefit from AVX2 and AVX512 dot product implementations for faster vector processing. +- **Command processing**: New lookahead prefetching parses multiple commands in advance through a lookahead pipeline, reducing processing latency. + +### Memory efficiency improvements + +- **JSON data types**: Improved memory footprint through homogeneous array optimization and short string inlining. +- **Lua integration**: Enhanced JSON array handling with the new `decode_array_with_array_mt` configuration parameter for better memory utilization. + +### Search and indexing enhancements + +Redis 8.4 introduces several improvements to search functionality: + +- **Default scoring**: The new `search-default-scorer` parameter sets BM25STD as the default text and tag scorer, providing better relevance ranking out of the box. +- **OOM handling**: The `search-on-oom` parameter controls query behavior during out-of-memory conditions, with options to ignore, fail, or return partial results. +- **Multi-threading**: The `search-io-threads` parameter allows you to configure communication threads for cluster manager coordination, improving search performance in clustered environments. +- **Index updates**: Search indexes now support updates during atomic slot migrations, maintaining search functionality during cluster operations. + +### Enhanced configuration + +Redis 8.4 introduces new configuration parameters that give you greater control over system behavior: + +- `lookahead`: Runtime-configurable lookahead depth for command prefetching (default: 16) +- `aof-load-corrupt-tail-max-size`: Maximum corrupted tail size for automatic AOF repair +- `decode_array_with_array_mt`: Controls how Lua handles empty JSON arrays + +## Component versions + +Redis 8.4 continues the unified distribution approach, delivering all functionality in a single Redis Open Source package without separate modules. This includes: + +- **RedisTimeSeries**: Enhanced with `HELP` and `COMMAND DOCS` support for time series commands +- **RedisBloom**: Improved with `HELP` and `COMMAND DOCS` support for probabilistic commands +- **RediSearch**: Advanced hybrid search capabilities and improved cluster coordination + +## Known limitations + +When using Redis 8.4, be aware of these current limitations: + +- Search commands (`FT.SEARCH`, `FT.AGGREGATE`, `FT.CURSOR`, `FT.HYBRID`) and time series commands (`TS.MGET`, `TS.MRANGE`, `TS.MREVRANGE`, `TS.QUERYINDEX`) may return partial results or duplicates during atomic slot migration. +- `FT.PROFILE`, `FT.EXPLAIN`, and `FT.EXPLAINCLI` don't include `FT.HYBRID` options. +- `FT.HYBRID` metrics aren't displayed in `FT.INFO` and `INFO` commands. +- Several `FT.HYBRID` options (`EXPLAINSCORE`, `SHARD_K_RATIO`, `YIELD_DISTANCE_AS`, `WITHCURSOR`) are not yet available. +- Post-filtering after the `COMBINE` step using `FILTER` is not currently supported. diff --git a/content/develop/whats-new/redis-feature-sets.md b/content/develop/whats-new/redis-feature-sets.md index f0782471e2..ddfc5d6552 100644 --- a/content/develop/whats-new/redis-feature-sets.md +++ b/content/develop/whats-new/redis-feature-sets.md @@ -17,6 +17,7 @@ To use a new feature introduced in a later feature set, you must upgrade the cor | Redis feature set | What's new | |-------------------|------------| +| **Feature set version:** 8.4| See [here]({{< relref "/develop/whats-new/8-4" >}})| | **Feature set version:** 8.2| See [here]({{< relref "/develop/whats-new/8-2" >}})| | **Feature set version:** 8.0| See [here]({{< relref "/develop/whats-new/8-0" >}})| | **Feature set version:** 7.4

**Component versions:**
[Redis 7.4]({{}})
[Search 2.10]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.10-release-notes.md" >}})
[JSON 2.8]({{}})
[Time series 1.12]({{}})
[Bloom 2.8]({{}}) | **Hash**:
- [Expiration of individual hash fields]({{}}).
**Streams**:
- To start reading from the last stream message, use [`XREAD`]({{}}) with the new ID value `+`.
**Time series**:
Insertion-filter for close samples.
**JSON**:
- A fix to not duplicate `AOF` commands multiple times in [`JSON.MSET`]({{< relref "commands/json.mset/" >}}).
**Probabilistic**:
- Returns an error if [`CMS.MERGE`]({{< relref "commands/cms.merge/" >}}) results in an overflow or underflow.
**Redis Query Engine**:
- New `BFLOAT16` and `FLOAT16` vector data types, reducing memory consumed by vectors while preserving accuracy.
- Support for indexing empty and missing values and enhanced developer experience for queries with exact matching capabilities.
- You can match `TAG` fields without needing to escape special characters.
- Expanded geospatial search with new `INTERSECT` and `DISJOINT` operators, improved reporting of the memory consumed by the index, and exposed full-text scoring in aggregation pipelines. |