|
| 1 | +--- |
| 2 | +Title: Redis Data Integration release notes 1.15.0 (October 2025) |
| 3 | +alwaysopen: false |
| 4 | +categories: |
| 5 | +- docs |
| 6 | +- operate |
| 7 | +- rs |
| 8 | +description: | |
| 9 | + Flink collector for Spanner enabled by default for improved user experience. |
| 10 | + Enhanced high availability with configurable leader election and standby mode. |
| 11 | + Support for sharded RDI Redis databases. |
| 12 | + Improved configuration validation and monitoring capabilities. |
| 13 | + Better resource management and security enhancements. |
| 14 | +linkTitle: 1.15.0 (October 2025) |
| 15 | +toc: 'true' |
| 16 | +weight: 976 |
| 17 | +--- |
| 18 | + |
| 19 | +RDI's mission is to help Redis customers sync Redis Enterprise with live data from their slow disk-based databases to: |
| 20 | + |
| 21 | +- Meet the required speed and scale of read queries and provide an excellent and predictable user experience. |
| 22 | +- Save resources and time when building pipelines and coding data transformations. |
| 23 | +- Reduce the total cost of ownership by saving money on expensive database read replicas. |
| 24 | + |
| 25 | +RDI keeps the Redis cache up to date with changes in the primary database, using a [_Change Data Capture (CDC)_](https://en.wikipedia.org/wiki/Change_data_capture) mechanism. |
| 26 | +It also lets you _transform_ the data from relational tables into convenient and fast data structures that match your app's requirements. You specify the transformations using a configuration system, so no coding is required. |
| 27 | + |
| 28 | +## What's New in 1.15.0 |
| 29 | + |
| 30 | +{{<warning>}} |
| 31 | +**Breaking change when using JSON with `json_update_strategy: merge`** |
| 32 | + |
| 33 | +RDI now uses the native `JSON.MERGE` command instead of Lua scripts for JSON merge operations. While this provides significant performance improvements (2x faster), there is a **functional difference** in how null values are handled: |
| 34 | + |
| 35 | +- **Previous behavior (Lua merge)**: When merging `{"field1": "value1", "field2": "value2"}` with `{"field2": null, "field3": "value3"}`, the result was `{"field1": "value1", "field2": null, "field3": "value3"}` (null value is preserved) |
| 36 | +- **New behavior (JSON.MERGE)**: The same merge produces `{"field1": "value1", "field3": "value3"}` (null value removes the field, following [RFC 7396](https://datatracker.ietf.org/doc/html/rfc7396)) |
| 37 | + |
| 38 | +**Impact**: If your application logic distinguishes between a field with a `null` value and a missing field, you may need to adjust your data handling. This follows the JSON Merge Patch RFC standard but differs from the previous Lua implementation. |
| 39 | + |
| 40 | +**Configuration**: You can control this behavior using the `use_native_json_merge` property in the processors section of your configuration. Set it to `false` to revert to the previous Lua-based merge behavior if needed. |
| 41 | +{{</warning>}} |
| 42 | + |
| 43 | +- **Native JSON merge for improved performance**: RDI now automatically uses the native `JSON.MERGE` command from RedisJSON 2.6.0+ instead of Lua scripts for JSON merge operations, providing 2x performance improvement. This feature is enabled by default and can be controlled via the `use_native_json_merge` property in the processors section of the configuration. **Note**: If the target Redis database has RedisJSON version lower than 2.6.0, the processor will automatically revert to using the Lua-based merge implementation. |
| 44 | +- **Support for sharded Redis databases**: RDI now supports writing to multi-sharded Redis Enterprise databases for the RDI database, resolving cross-slot violations when reading from streams. |
| 45 | +- **Enhanced processor performance metrics**: Detailed performance metrics are now exposed through the metrics exporter and statistics endpoint, with separate tracking for transformation time and write time. |
| 46 | +- **Resource management improvements**: Collector and processor pods now support configurable resource requests, limits, and node affinity/tolerations for better cluster resource utilization. |
| 47 | + - The `collector` defaults to 1 CPU and 1024Mi memory (requests), with limits of 4 CPUs and 4096Mi memory. |
| 48 | + - The `processor` defaults to 1 CPU and 512Mi memory (requests), with limits of 4 CPUs and 3072Mi memory. |
| 49 | + |
| 50 | +- **Leadership status monitoring**: New metrics expose leadership status and pipeline phase information for better monitoring of HA deployments. |
| 51 | + - The `rdi_operator_is_leader` metric tracks the current leadership status of the operator: `1` indicates the instance is the leader, `0` indicates it is not the leader. |
| 52 | + - The `rdi_operator_pipeline_phase` metric tracks the current phase of the pipeline. Phase indicates the current pipeline phase, must be one of `Active`, `Inactive`, `Resetting`, `Pending`, or `Error`. |
| 53 | +- **Improved configuration validation**: More rigid validation for `config.yaml` and `jobs.yaml` files helps catch configuration errors earlier in the deployment process. |
| 54 | +- **Custom K3s installation options**: The installer now supports passing custom arguments to K3s installation for more flexible on-premises deployments. |
| 55 | + - Example: `sudo INSTALL_K3S_EXEC='--write-kubeconfig-mode=644' ./install.sh` |
| 56 | +- **Workload Identity authentication**: Added support for Google Cloud Workload Identity authentication to Google Cloud Storage (GCS), eliminating the need for service account JSON files if using GSC-based leader election. |
| 57 | +- Exposed new processor performance metrics showing transformation and write times separately |
| 58 | + - `{namespace}_processor_process_time_ms_total` - Total time spent in the processor (transform + write) |
| 59 | + - `{namespace}_processor_transform_time_ms_total` - Time spent transforming data |
| 60 | + - `{namespace}_processor_write_time_ms_total` - Time spent writing data to Redis |
| 61 | +- Exposed all existing processor metrics that were only available through the RDI CLI status and the API statistics endpoint. |
| 62 | +- Enhanced statistics endpoint with new metrics for transform and process time |
| 63 | + |
| 64 | +### Bug Fixes and Stability Improvements |
| 65 | + |
| 66 | +- **Fixed task reconciliation errors**: Resolved "The ID argument cannot be a complete ID because xadd-id-uniqueness-mode is strict" errors during task reconciliation when using an RDI Redis database with strict XADD id uniqueness mode. |
| 67 | +- **Fixed Debezium unavailable values**: Addressed issues where `__debezium_unavailable_value` was appearing in Redis data. |
| 68 | +- **Improved operator stability**: Disabled operator webhooks by default to simplify deployments and reduce potential issues. |
| 69 | + |
| 70 | +## Limitations |
| 71 | + |
| 72 | +RDI can write data to a Redis Active-Active database. However, it doesn't support writing data to two or more Active-Active replicas. Writing data from RDI to several Active-Active replicas could easily harm data integrity as RDI is not synchronous with the source database commits. |
0 commit comments