From ee5733e6c24b073f8bf8130c95ae79836d151006 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Thu, 5 Dec 2024 14:38:41 +0000 Subject: [PATCH 1/3] DOC-4560 started Jedis pipe/trans page --- content/develop/clients/jedis/transpipe.md | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 content/develop/clients/jedis/transpipe.md diff --git a/content/develop/clients/jedis/transpipe.md b/content/develop/clients/jedis/transpipe.md new file mode 100644 index 000000000..5b3d2e35c --- /dev/null +++ b/content/develop/clients/jedis/transpipe.md @@ -0,0 +1,79 @@ +--- +categories: +- docs +- develop +- stack +- oss +- rs +- rc +- oss +- kubernetes +- clients +description: Learn how to use Redis pipelines and transactions +linkTitle: Pipelines/transactions +title: Pipelines and transactions +weight: 2 +--- + +Redis lets you send a sequence of commands to the server together in a batch. +There are two types of batch that you can use: + +- **Pipelines** avoid network and processing overhead by sending several commands + to the server together in a single communication. The server then sends back + a single communication with all the responses. See the + [Pipelining]({{< relref "/develop/use/pipelining" >}}) page for more + information. +- **Transactions** guarantee that all the included commands will execute + to completion without being interrupted by commands from other clients. + See the [Transactions]({{< relref "/develop/interact/transactions" >}}) + page for more information. + +## Execute a pipeline + +To execute commands in a pipeline, you first create a pipeline object +and then add commands to it using methods that resemble the standard +command methods (for example, `set()` and `get()`). The commands are +buffered in the pipeline and only execute when you call the `sync()` +method on the pipeline object. + +The return values of the pipeline commands are `Response` objects, +where `Type` is the type returned by the standard non-pipelined form +of the command. You can access the return value from a `Response<>` object +only after the pipeline has executed using its `get()` method. + + +{{< clients-example pipe_trans_tutorial basic_pipe >}} +{{< /clients-example >}} + +## Execute a transaction + +{{< clients-example pipe_trans_tutorial basic_trans >}} +{{< /clients-example >}} + +## Watch keys for changes + +Redis supports *optimistic locking* to avoid inconsistent updates +to different keys. The basic idea is to watch for changes to any +keys that you use in a transaction while you are are processing the +updates. If the watched keys do change, you must restart the updates +with the latest data from the keys. See +[Transactions]({{< relref "/develop/interact/transactions" >}}) +for more information about optimistic locking. + +The example below shows how to repeatedly attempt a transaction with a watched +key until it succeeds. The code reads a string +that represents a `PATH` variable for a command shell, then appends a new +command path to the string before attempting to write it back. If the watched +key is modified by another client before writing, the transaction aborts +with a `WatchError` exception, and the loop executes again for another attempt. +Otherwise, the loop terminates successfully. + + + +{{< clients-example pipe_trans_tutorial trans_watch >}} +{{< /clients-example >}} \ No newline at end of file From b99b5c7a2870bcfd374cc96c23e6505fa50b89b6 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Thu, 5 Dec 2024 16:05:05 +0000 Subject: [PATCH 2/3] DOC-4635 added release notes for v1.4.3 --- .../release-notes/rdi-1-4-3.md | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 content/integrate/redis-data-integration/release-notes/rdi-1-4-3.md diff --git a/content/integrate/redis-data-integration/release-notes/rdi-1-4-3.md b/content/integrate/redis-data-integration/release-notes/rdi-1-4-3.md new file mode 100644 index 000000000..1794ad04c --- /dev/null +++ b/content/integrate/redis-data-integration/release-notes/rdi-1-4-3.md @@ -0,0 +1,50 @@ +--- +Title: Redis Data Integration release notes 1.4.3 (December 2024) +alwaysopen: false +categories: +- docs +- operate +- rs +description: Installation on Kubernetes with a Helm chart. Improvements for installation on VMs. +linkTitle: 1.4.3 (December 2024) +toc: 'true' +weight: 994 +--- + +> This maintenance release replaces the 1.4.2 release. + +RDI’s mission is to help Redis customers sync Redis Enterprise with live data from their slow disk-based databases to: + +- Meet the required speed and scale of read queries and provide an excellent and predictable user experience. +- Save resources and time when building pipelines and coding data transformations. +- Reduce the total cost of ownership by saving money on expensive database read replicas. + +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. +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. + +## Headlines + +- Installation on [Kubernetes]({{< relref "/integrate/redis-data-integration/installation/install-k8s" >}}) using a [Helm chart](https://helm.sh/docs/). You can install on [OpenShift](https://docs.openshift.com/) or other flavours of K8s using Helm. + +- Improvements for installation on VMs: + - Installer checks if the OS firewall is enabled on Ubuntu and RHEL. + - Installer verifies DNS resolution from RDI components. + - Installer provides log lines from components that failed during RDI deployment if a problem occurs. + - Improved verification of RDI installation. + - Installer verifies if the RDI database is in use by another instance of RDI. + - Installer checks and warns if any [`iptables`](https://www.netfilter.org/projects/iptables/index.html) rules are set. + - Improved message when RDI tries to connect to its Redis database with invalid TLS keys. + +## Issues fixed + +- **RDSC-2963**: Helm chart `rdiSysSecret` does not create an empty secret if you are not using a password. +- **RDSC-2729**: Use Debezium Server 2.7.3 and remove Prometheus. +- **RDSC-2333**: Ensure the installer creates the context file correctly. +- **RDSC-2806**: Remove incorrectly created deployment. +- **RDSC-2729**: Fix `processors` `null` instead of `{}`. +- **RDSC-2905**: Fix DNS check with multiple IP addresses. +- **RDSC-2845**: RDI Helm chart release is set with `tag: 0.0.0`, but this should be the current release. + +## Limitations + +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. From 52239e480911fbf04347e3d6b41a4f82a1991e52 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Thu, 5 Dec 2024 16:10:05 +0000 Subject: [PATCH 3/3] DOC-4635 removed transpipe.md file added accidentally --- content/develop/clients/jedis/transpipe.md | 79 ---------------------- 1 file changed, 79 deletions(-) delete mode 100644 content/develop/clients/jedis/transpipe.md diff --git a/content/develop/clients/jedis/transpipe.md b/content/develop/clients/jedis/transpipe.md deleted file mode 100644 index 5b3d2e35c..000000000 --- a/content/develop/clients/jedis/transpipe.md +++ /dev/null @@ -1,79 +0,0 @@ ---- -categories: -- docs -- develop -- stack -- oss -- rs -- rc -- oss -- kubernetes -- clients -description: Learn how to use Redis pipelines and transactions -linkTitle: Pipelines/transactions -title: Pipelines and transactions -weight: 2 ---- - -Redis lets you send a sequence of commands to the server together in a batch. -There are two types of batch that you can use: - -- **Pipelines** avoid network and processing overhead by sending several commands - to the server together in a single communication. The server then sends back - a single communication with all the responses. See the - [Pipelining]({{< relref "/develop/use/pipelining" >}}) page for more - information. -- **Transactions** guarantee that all the included commands will execute - to completion without being interrupted by commands from other clients. - See the [Transactions]({{< relref "/develop/interact/transactions" >}}) - page for more information. - -## Execute a pipeline - -To execute commands in a pipeline, you first create a pipeline object -and then add commands to it using methods that resemble the standard -command methods (for example, `set()` and `get()`). The commands are -buffered in the pipeline and only execute when you call the `sync()` -method on the pipeline object. - -The return values of the pipeline commands are `Response` objects, -where `Type` is the type returned by the standard non-pipelined form -of the command. You can access the return value from a `Response<>` object -only after the pipeline has executed using its `get()` method. - - -{{< clients-example pipe_trans_tutorial basic_pipe >}} -{{< /clients-example >}} - -## Execute a transaction - -{{< clients-example pipe_trans_tutorial basic_trans >}} -{{< /clients-example >}} - -## Watch keys for changes - -Redis supports *optimistic locking* to avoid inconsistent updates -to different keys. The basic idea is to watch for changes to any -keys that you use in a transaction while you are are processing the -updates. If the watched keys do change, you must restart the updates -with the latest data from the keys. See -[Transactions]({{< relref "/develop/interact/transactions" >}}) -for more information about optimistic locking. - -The example below shows how to repeatedly attempt a transaction with a watched -key until it succeeds. The code reads a string -that represents a `PATH` variable for a command shell, then appends a new -command path to the string before attempting to write it back. If the watched -key is modified by another client before writing, the transaction aborts -with a `WatchError` exception, and the loop executes again for another attempt. -Otherwise, the loop terminates successfully. - - - -{{< clients-example pipe_trans_tutorial trans_watch >}} -{{< /clients-example >}} \ No newline at end of file