diff --git a/content/develop/whats-new/8-0.md b/content/develop/whats-new/8-0.md index 41dc2804a..1ee139707 100644 --- a/content/develop/whats-new/8-0.md +++ b/content/develop/whats-new/8-0.md @@ -8,8 +8,8 @@ categories: - operate - rs - rc -description: What's new in Redis 8 -linkTitle: What's new in Redis 8 +description: What's new in Redis 8.0 +linkTitle: What's new in Redis 8.0 weight: 5 --- diff --git a/content/develop/whats-new/8-2.md b/content/develop/whats-new/8-2.md new file mode 100644 index 000000000..7c7964ee2 --- /dev/null +++ b/content/develop/whats-new/8-2.md @@ -0,0 +1,123 @@ +--- +title: Redis 8.2 +alwaysopen: false +categories: +- docs +- operate +- rs +- rc +description: What's new in Redis 8.2 +linkTitle: What's new in Redis 8.2 +weight: 4 +--- + +Redis 8.2 builds on the foundation of Redis 8.0 with significant performance and memory optimizations, enhanced streaming capabilities, and improved cluster management tools. + +This release delivers major improvements across multiple areas: +- Enhanced Redis Streams with new commands for better consumer group management +- New bitmap operations for advanced bit manipulation +- Advanced cluster monitoring with per-slot usage metrics +- Optimized vector search with new compression algorithms +- Enhanced keyspace notifications with new event types +- More than 15 performance and resource utilization improvements + +Below is a detailed breakdown of these updates. + +## Security improvements + +Redis 8.2 includes important security fixes: +- **CVE-2025-27151**: Fixed potential stack overflow and RCE vulnerability in redis-check-aof. +- **CVE-2025-32023**: Fixed out-of-bounds write vulnerability in HyperLogLog commands. +- **CVE-2025-48367**: Improved connection handling to retry accepting connections even when errors occur. + +## New features + +### Enhanced Redis Streams + +Redis 8.2 introduces powerful new commands that simplify consumer group management and stream lifecycle operations: + +- [`XDELEX`]({{< relref "/commands/xdelex/" >}}): Delete entries from streams with advanced consumer group handling options. +- [`XACKDEL`]({{< relref "/commands/xackdel/" >}}): Acknowledge and delete stream entries in a single atomic operation. + +These commands include `KEEPREF`, `DELREF`, and `ACKED` options that give you precise control over how consumer group references are handled during entry deletion. This simplifies common patterns where you need to clean up acknowledged entries while working with multiple consumer groups. + +The [`XADD`]({{< relref "/commands/xadd/" >}}) and [`XTRIM`]({{< relref "/commands/xtrim/" >}}) commands have also been extended with these same options, providing consistent behavior across all commands that remove stream entries. + +### Cluster monitoring improvements + +The new [`CLUSTER SLOT-STATS`]({{< relref "/commands/cluster-slot-stats/" >}}) command provides detailed per-slot usage metrics including: +- Key count per slot +- CPU time consumption +- Network ingress and egress + +This enhanced visibility helps you optimize cluster performance and identify hotspots in your data distribution. + +### Vector search enhancements + +The `VSIM` command now supports the `IN` operator for filtering expressions, giving you more flexibility when performing vector similarity searches with complex filtering criteria. + +### Enhanced bitmap operations + +Redis 8.2 extends the [`BITOP`]({{< relref "/commands/bitop/" >}}) command with new operators that provide more sophisticated bit manipulation capabilities: + +- **DIFF**: Perform bitwise difference operations between bitmaps. +- **DIFF1**: Calculate the difference with optimized single-bit operations. +- **ANDOR**: Combine AND and OR operations in a single command. +- **ONE**: Specialized operation for single-bit scenarios. + +These new operators enable more complex bitmap workflows and can simplify operations that previously required multiple commands. + +### Improved keyspace notifications + +Redis 8.2 introduces new keyspace notification event types that provide better visibility into data changes: + +- **OVERWRITTEN**: Triggered when a key's value is completely overwritten. +- **TYPE_CHANGED**: Fired when a key's data type changes. + +These events help you build more responsive applications by providing granular notifications about specific types of data modifications. + +## Improvements + +Redis 8.2 delivers substantial performance improvements across core operations. + +### Performance optimizations + +- **BITCOUNT**: Enhanced with prefetching optimizations for faster bit counting operations. +- **SCAN**: Optimized to perform expiration checks only on databases with volatile keys, reducing unnecessary overhead. +- **List operations**: `LREM`, `LPOS`, and `LINSERT` benefit from cached `string2ll` results in `quicklistCompare`. +- **Sorted set operations**: `ZRANK` and related commands use the same caching optimizations. +- **Key operations**: `COPY`, `RENAME`, and `RESTORE` are optimized when TTL is used. +- **Client management**: Reduced overhead in client cron operations to avoid blocking the main thread. +- **Vector operations**: Improved RDB loading and RESTORE speed for vector sets by storing worst link information. + +### Memory efficiency improvements + +- **JSON data types**: Memory footprint improvements through number inlining. +- **Memory tracking**: Reduced overhead associated with tracking malloc's usable memory. +- **Expiry handling**: Optimized expiry checks in scan callbacks. +- **Vector compression**: Additional compression variants for the SVS-VAMANA vector index reduce memory usage. + +### Vector search performance + +Redis 8.2 introduces the `SHARD_K_RATIO` parameter for KNN vector queries in Redis clusters. This unstable feature allows you to favor network latency over accuracy, providing faster responses when exact precision isn't critical. + +### Enhanced metrics + +Redis 8.2 provides new metrics to help you monitor and troubleshoot your Redis instances. + +#### Memory metrics + +- `used_memory_peak_time`: Timestamp when `used_memory_peak` was reached + +#### Replication metrics + +- `master_current_sync_attempts`: Number of sync attempts since last disconnection +- `master_total_sync_attempts`: Total number of sync attempts to master +- `master_link_up_since_seconds`: Duration since the replication link was established +- `total_disconnect_time_sec`: Cumulative time the replica has been disconnected + +These metrics provide better visibility into replication health and help you identify patterns in connection stability. + +## Component versions + +Redis 8.2 continues the unified distribution approach introduced in Redis 8.0, delivering all functionality in a single Redis Open Source package without separate modules. diff --git a/content/develop/whats-new/redis-feature-sets.md b/content/develop/whats-new/redis-feature-sets.md index ca3a8a072..f0782471e 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.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. | | **Feature set version:** 7.2

**Component versions:**
[Redis 7.2](https://raw.githubusercontent.com/redis/redis/7.2/00-RELEASENOTES)
[Search 2.8]({{< relref "/operate/oss_and_stack/stack-with-enterprise/release-notes/redisearch/redisearch-2.8-release-notes.md" >}})
[JSON 2.6]({{}})
[Time series 1.10]({{}})
[Bloom 2.6]({{}})
[Gears 2.0](https://github.com/RedisGears/RedisGears/releases) | - Performance and resource utilization improvements, including significant memory and speed optimizations for lists, sets, and sorted sets.
**JSON**:
- New JSON commands: [`JSON.MERGE`]({{< relref "commands/json.merge/" >}}) and [`JSON.MSET`]({{< relref "commands/json.mset/" >}}).
**Redis Query Engine:**
- [Geo polygon search]({{< relref "commands/ft.search/#examples" >}}).
**Compatibility changes**:
- Redis 7.2 uses a new format (version 11) for RDB files, which is incompatible with older versions.
- Redis feature set 7.2 does not include [graph capabilities](https://redis.io/blog/redisgraph-eol/). | diff --git a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.2-release-notes.md b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.2-release-notes.md index b1cc2c8f4..d657b7da3 100644 --- a/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.2-release-notes.md +++ b/content/operate/oss_and_stack/stack-with-enterprise/release-notes/redisce/redisos-8.2-release-notes.md @@ -6,12 +6,76 @@ categories: - operate - stack description: Redis Open Source 8.2 release notes. -linkTitle: v8.2.0 (July 2025) +linkTitle: v8.2.0 (August 2025) min-version-db: blah min-version-rs: blah weight: 20 --- +## Redis Open Source 8.2 (August 2025) + +This is the General Availability release of Redis 8.2 in Redis Open Source. + +### Headlines + +Redis 8.2 introduces major performance and memory footprint improvements, new commands, and command extensions. + +### Major changes compared to 8.0 + +- Streams - new commands: `XDELEX` and `XACKDEL`; extension to `XADD` and `XTRIM`. +- Bitmap - `BITOP`: new operators: `DIFF`, `DIFF1`, `ANDOR`, and `ONE`. +- Query Engine - new SVS-VAMANA vector index type which supports vector compression. +- More than 15 performance and resource utilization improvements. +- New metrics: per-slot usage metrics, key size distributions for basic data types, and more. + +### Binary distributions + +- Alpine and Debian Docker images - https://hub.docker.com/_/redis +- Install using snap - see https://github.com/redis/redis-snap +- Install using brew - see https://github.com/redis/homebrew-redis +- Install using RPM - see https://github.com/redis/redis-rpm +- Install using Debian APT - see https://github.com/redis/redis-debian + +### Redis 8.0.0 was tested on the following operating systems + +- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat) +- Rocky Linux 8.10, 9.5 +- AlmaLinux 8.10, 9.5 +- Debian 12 (Bookworm) +- macOS 13 (Ventura), 14 (Sonoma), 15 (Sequoia) + +### Security fixes (compared to 8.2-RC1) + +- (CVE-2025-32023) Fix out-of-bounds write in `HyperLogLog` commands. +- (CVE-2025-48367) Retry accepting other connections even if the accepted connection reports an error. + +### New Features (compared to 8.2-RC1) + +- [#14141](https://github.com/redis/redis/pull/14141) Keyspace notifications - new event types: + - `OVERWRITTEN` - the value of a key is completely overwritten + - `TYPE_CHANGED` - key type change + +### Bug fixes (compared to 8.2-RC1) + +- [#14162](https://github.com/redis/redis/pull/14162) Crash when using evport with I/O threads. +- [#14163](https://github.com/redis/redis/pull/14163) `EVAL` crash when error table is empty. +- [#14144](https://github.com/redis/redis/pull/14144) Vector sets - RDB format is not compatible with big endian machines. +- [#14165](https://github.com/redis/redis/pull/14165) Endless client blocking for blocking commands. +- [#14164](https://github.com/redis/redis/pull/14164) Prevent `CLIENT UNBLOCK` from unblocking `CLIENT PAUSE`. +- [#14216](https://github.com/redis/redis/pull/14216) TTL was not removed by the `SET` command. +- [#14224](https://github.com/redis/redis/pull/14224) `HINCRBYFLOAT` removes field expiration on replica. + +### Performance and resource utilization improvements (compared to 8.2-RC1) + +- [#Q6430](https://github.com/RediSearch/RediSearch/pull/6430) More compression variants for the SVS-VAMANA vector index. +- [#Q6535](https://github.com/RediSearch/RediSearch/pull/6535) `SHARD_K_RATIO` parameter - favor network latency over accuracy for KNN vector query in a Redis cluster (unstable feature) (MOD-10359). +- [#14144](https://github.com/redis/redis/pull/14144) Vector set - improve RDB loading / RESTORE speed by storing the worst link info . + +### Modules API + +- [#14051](https://github.com/redis/redis/pull/14051) `RedisModule_Get*`, `RedisModule_Set*` - allow modules to access Redis configurations. +- [#14114](https://github.com/redis/redis/pull/14114) `RM_UnsubscribeFromKeyspaceEvents` - unregister a module from specific keyspace notifications. + ## Redis Open Source 8.2-RC1 (July 2025) This is the first Release Candidate of Redis Open Source 8.2. @@ -30,31 +94,31 @@ Redis 8.2-RC1 is available as a Docker image and can be downloaded from [Docker ### New Features (compared to 8.2-M01) -- [#14130](https://github.com/redis/redis/pull/14130) Streams - new commands: `XDELEX` and `XACKDEL`; extension to `XADD` and `XTRIM` -- [#14039](https://github.com/redis/redis/pull/14039) New command: `CLUSTER SLOT-STATS` - get per-slot usage metrics such as key count, CPU time, and network I/O -- [#14122](https://github.com/redis/redis/pull/14122) `VSIM` - new `IN` operator for filtering expressions -- [#Q6329](https://github.com/RediSearch/RediSearch/pull/6329), [#Q6394](https://github.com/RediSearch/RediSearch/pull/6394) - Query Engine - new SVS-VAMANA vector index type which supports vector compression (optimized for Intel machines) +- [#14130](https://github.com/redis/redis/pull/14130) Streams - new commands: `XDELEX` and `XACKDEL`; extension to `XADD` and `XTRIM`. +- [#14039](https://github.com/redis/redis/pull/14039) New command: `CLUSTER SLOT-STATS` - get per-slot usage metrics such as key count, CPU time, and network I/O. +- [#14122](https://github.com/redis/redis/pull/14122) `VSIM` - new `IN` operator for filtering expressions. +- [#Q6329](https://github.com/RediSearch/RediSearch/pull/6329), [#Q6394](https://github.com/RediSearch/RediSearch/pull/6394) - Query Engine - new SVS-VAMANA vector index type which supports vector compression (optimized for Intel machines). ### Bug fixes (compared to 8.2-M01) -- [#14143](https://github.com/redis/redis/pull/14143) Gracefully handle short read errors for hashes with TTL during full sync +- [#14143](https://github.com/redis/redis/pull/14143) Gracefully handle short read errors for hashes with TTL during full sync. ### Performance and resource utilization improvements (compared to 8.2-M01) -- [#14103](https://github.com/redis/redis/pull/14103) Optimize `BITCOUNT` by introducing prefetching -- [#14121](https://github.com/redis/redis/pull/14121) Optimize `SCAN` by performing expiration checks only on DBs with volatile keys -- [#14140](https://github.com/redis/redis/pull/14140) Optimize expiry check in `scanCallback` -- [#14131](https://github.com/redis/redis/pull/14131) Optimize `LREM`, `LPOS`, `LINSERT`, `ZRANK`, and more by caching `string2ll` results in `quicklistCompare` -- [#14088](https://github.com/redis/redis/pull/14088) Optimize `COPY`, `RENAME`, and `RESTORE` when TTL is used -- [#14074](https://github.com/redis/redis/pull/14074) Reduce the overhead associated with tracking `malloc`’s usable memory -- [#13900](https://github.com/redis/redis/pull/13900) Optimize the client’s cron to avoid blocking the main thread -- [#J1350](https://github.com/RedisJSON/RedisJSON/pull/1350) JSON - memory footprint improvement by inlining numbers (MOD-9511) +- [#14103](https://github.com/redis/redis/pull/14103) Optimize `BITCOUNT` by introducing prefetching. +- [#14121](https://github.com/redis/redis/pull/14121) Optimize `SCAN` by performing expiration checks only on DBs with volatile keys. +- [#14140](https://github.com/redis/redis/pull/14140) Optimize expiry check in `scanCallback`. +- [#14131](https://github.com/redis/redis/pull/14131) Optimize `LREM`, `LPOS`, `LINSERT`, `ZRANK`, and more by caching `string2ll` results in `quicklistCompare`. +- [#14088](https://github.com/redis/redis/pull/14088) Optimize `COPY`, `RENAME`, and `RESTORE` when TTL is used. +- [#14074](https://github.com/redis/redis/pull/14074) Reduce the overhead associated with tracking `malloc`’s usable memory. +- [#13900](https://github.com/redis/redis/pull/13900) Optimize the client’s cron to avoid blocking the main thread. +- [#J1350](https://github.com/RedisJSON/RedisJSON/pull/1350) JSON - memory footprint improvement by inlining numbers (MOD-9511). ### Metrics -- [#14067](https://github.com/redis/redis/pull/14067) `INFO`: `used_memory_peak_time` - time when `used_memory_peak` was hit +- [#14067](https://github.com/redis/redis/pull/14067) `INFO`: `used_memory_peak_time` - time when `used_memory_peak` was hit. - [#13990](https://github.com/redis/redis/pull/13990) `INFO`: - - `master_current_sync_attempts` - number of times the replica attempted to sync to a master since last disconnection - - `master_total_sync_attempts` - number of times the replica attempted to sync to a master - - `master_link_up_since_seconds` - number of seconds since the link has been up - - `total_disconnect_time_sec` - total cumulative time the replica has been disconnected + - `master_current_sync_attempts` - number of times the replica attempted to sync to a master since last disconnection. + - `master_total_sync_attempts` - number of times the replica attempted to sync to a master. + - `master_link_up_since_seconds` - number of seconds since the link has been up. + - `total_disconnect_time_sec` - total cumulative time the replica has been disconnected.