Skip to content
Merged
10 changes: 10 additions & 0 deletions config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,16 @@ rdi_current_version = "1.15.0"
"Rust-sync"={quickstartSlug="rust"}
"Rust-async"={quickstartSlug="rust"}

# Mount directories for duplicate content
[module]
[[module.mounts]]
source = "content"
target = "content"
[[module.mounts]]
source = "content/operate/rs/databases/active-active/develop"
target = "content/operate/rc/databases/active-active/develop"
excludeFiles = ["_index.md"]

# Markup
[markup]
[markup.goldmark]
Expand Down
9 changes: 9 additions & 0 deletions content/embeds/rc-aa-cidr.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Every CIDR should be unique to properly route network traffic between each Active-Active database instance and your consumer VPCs. The CIDR block regions should _not_ overlap between the Redis server and your app consumer VPCs. In addition, CIDR blocks should not overlap between cluster instances.

When all **Deployment CIDR** regions display a green checkmark, you're ready to continue.

{{<image filename="images/rc/icon-cidr-address-ok.png" width="30px" alt="Green checkmarks indicate valid CIDR address values." >}}

Red exclamation marks indicate error conditions; the tooltip provides additional details.

{{<image filename="images/rc/icon-cidr-address-error.png" width="30px" alt="Red exclamation points indicate CIDR address problems." >}}
13 changes: 13 additions & 0 deletions content/embeds/rc-rs-aa-synchronization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
In the example below, database writes are concurrent at the points in
time t1 and t2 and happen before a sync can communicate the changes.
However, writes at times t4 and t6 are not concurrent as a sync happened
in between.

| **Time** | **CRDB Instance1** | **CRDB Instance2** |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a thought - do you think this might work well as a sequence diagram?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably. I don't want to make that change without buy-in from @rrelledge since this appears in both the Redis Cloud and Redis Software docs, and might be slightly out of scope for this PR specifically.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sequence diagrams probably would be better than the current (very old) tables, but I think maybe that could be handled in a separate ticket/PR so that it doesn't block merging this one.

| ------: | :------: | :------: |
| t1 | SET key1 "a" | |
| t2 | | SET key1 "b" |
| t3 | — Sync — | — Sync — |
| t4 | SET key1 "c" | |
| t5 | — Sync — | — Sync — |
| t6 | | SET key1 "d" |
2 changes: 1 addition & 1 deletion content/integrate/prometheus-with-redis-cloud/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ Redis publishes preconfigured dashboards for Redis Cloud and Grafana:

* The [subscription status dashboard](https://grafana.com/grafana/dashboards/18406-subscription-status-dashboard/) provides an overview of your Redis Cloud subscriptions.
* The [database status dashboard](https://grafana.com/grafana/dashboards/18407-database-status-dashboard/) displays specific database metrics, including latency, memory usage, ops/second, and key count.
* The [Active-Active dashboard](https://github.com/redis-field-engineering/redis-enterprise-observability/blob/main/grafana/dashboards/grafana_v9-11/cloud/basic/redis-cloud-active-active-dashboard_v9-11.json) displays metrics specific to [Active-Active databases]({{< relref "/operate/rc/databases/configuration/active-active-redis" >}}).
* The [Active-Active dashboard](https://github.com/redis-field-engineering/redis-enterprise-observability/blob/main/grafana/dashboards/grafana_v9-11/cloud/basic/redis-cloud-active-active-dashboard_v9-11.json) displays metrics specific to [Active-Active databases]({{< relref "/operate/rc/databases/active-active" >}}).

These dashboards are open source. For additional dashboard options, or to file an issue, see the [Redis Enterprise observability Github repository](https://github.com/redis-field-engineering/redis-enterprise-observability/tree/main/grafana).

Expand Down
2 changes: 1 addition & 1 deletion content/operate/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ hideListLinks: true
|:-----------|:--------------|:-----------|:--------------|:--------------|
| Clustering | [Clustering]({{< relref "/operate/rc/databases/configuration/clustering" >}}) | [Clustering]({{<relref "/operate/rs/databases/durability-ha/clustering">}}) | [Scale with Redis Cluster]({{< relref "/operate/oss_and_stack/management/scaling" >}}) | [Redis Enterprise clusters (REC)]({{<relref "/operate/kubernetes/re-clusters">}}) |
| Replication | [Replication]({{< relref "/operate/rc/databases/configuration/high-availability" >}}) | [Replication]({{<relref "/operate/rs/databases/durability-ha/replication">}}) | [Replication]({{< relref "/operate/oss_and_stack/management/replication" >}}) | [Create replica databases]({{<relref "/operate/kubernetes/re-databases/replica-redb/">}})|
| Active-Active geo-distribution | [Active-Active Redis]({{< relref "/operate/rc/databases/configuration/active-active-redis" >}}) | [Active-Active Redis]({{<relref "/operate/rs/databases/active-active">}}) | | [Active-Active databases]({{<relref "/operate/kubernetes/active-active/">}}) |
| Active-Active geo-distribution | [Active-Active Redis]({{< relref "/operate/rc/databases/active-active" >}}) | [Active-Active Redis]({{<relref "/operate/rs/databases/active-active">}}) | | [Active-Active databases]({{<relref "/operate/kubernetes/active-active/">}}) |
| Rolling upgrades | [Upgrade database version]({{< relref "/operate/rc/databases/upgrade-version" >}}) | [Upgrade Redis Software]({{<relref "/operate/rs/installing-upgrading/upgrading">}}) | | [Upgrade Redis for K8s]({{<relref "/operate/kubernetes/upgrade/">}}) |
| Redis Flex/Auto tiering | [Create a Redis Flex database]({{< relref "/operate/rc/databases/create-database/create-flex-database" >}}) | [Auto Tiering]({{<relref "/operate/rs/databases/auto-tiering">}}) | | [Auto Tiering]({{<relref "/operate/kubernetes/re-clusters/auto-tiering/">}}) |
| Persistence | [Data persistence]({{< relref "/operate/rc/databases/configuration/data-persistence" >}}) | [Persistence]({{<relref "/operate/rs/databases/configure/database-persistence">}}) | [Persistence]({{< relref "/operate/oss_and_stack/management/replication" >}}) | [Persistence volumes]({{<relref "/operate/kubernetes/recommendations/persistent-volumes/">}})|
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The design is based on [A Conflict-Free Replicated JSON Datatype](https://arxiv.

To use JSON in an Active-Active database, you must enable JSON during database creation.

Active-Active Redis Cloud databases add JSON by default. See [Create an Active-Active database]({{< relref "/operate/rc/databases/create-database/create-active-active-database#select-capabilities" >}}) in the Redis Cloud documentation for details.
Active-Active Redis Cloud databases add JSON by default. See [Create an Active-Active database]({{< relref "/operate/rc/databases/active-active/create-active-active-database#select-capabilities" >}}) in the Redis Cloud documentation for details.

In Redis Enterprise Software, JSON is not enabled by default for Active-Active databases. To create an Active-Active JSON database in Redis Enterprise Software:

Expand Down
4 changes: 2 additions & 2 deletions content/operate/rc/changelog/2023/december-2023.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ aliases:

### Active-Active JSON support

[Active-Active databases]({{< relref "/operate/rc/databases/configuration/active-active-redis" >}}) on Redis Cloud now support the [JSON]({{< relref "/operate/oss_and_stack/stack-with-enterprise/json" >}}) data type.
[Active-Active databases]({{< relref "/operate/rc/databases/active-active" >}}) on Redis Cloud now support the [JSON]({{< relref "/operate/oss_and_stack/stack-with-enterprise/json" >}}) data type.

See [Create an Active-Active subscription]({{< relref "/operate/rc/databases/create-database/create-active-active-database" >}}) to learn how to create an Active-Active subscription.
See [Create an Active-Active subscription]({{< relref "/operate/rc/databases/active-active/create-active-active-database" >}}) to learn how to create an Active-Active subscription.

### Mutual TLS enhancements

Expand Down
2 changes: 1 addition & 1 deletion content/operate/rc/changelog/2023/may-2023.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,6 @@ The new fixed endpoints can be viewed in the [Redis Cloud Swagger UI](https://ap

### Active-Active access roles

For [Active-Active databases]({{< relref "/operate/rc/databases/configuration/active-active-redis" >}}), you can now define roles with different levels of access for different regions.
For [Active-Active databases]({{< relref "/operate/rc/databases/active-active" >}}), you can now define roles with different levels of access for different regions.

For more information, see [Active-Active roles]({{< relref "/operate/rc/security/access-control/data-access-control/active-active-roles" >}}).
4 changes: 2 additions & 2 deletions content/operate/rc/changelog/2024/may-2024.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@ If you have an active SAML configuration, you can still sign in with SAML SSO, b

### Active-Active Search and query support

[Active-Active databases]({{< relref "/operate/rc/databases/configuration/active-active-redis" >}}) on Redis Cloud now support [Search and query]({{< relref "/operate/oss_and_stack/stack-with-enterprise/search" >}}).
[Active-Active databases]({{< relref "/operate/rc/databases/active-active" >}}) on Redis Cloud now support [Search and query]({{< relref "/operate/oss_and_stack/stack-with-enterprise/search" >}}).

See [Create an Active-Active database]({{< relref "/operate/rc/databases/create-database/create-active-active-database" >}}) to learn how to create an Active-Active database.
See [Create an Active-Active database]({{< relref "/operate/rc/databases/active-active/create-active-active-database" >}}) to learn how to create an Active-Active database.

See [Search and query Active-Active databases]({{< relref "/operate/oss_and_stack/stack-with-enterprise/search/search-active-active" >}}) to learn how to use Search and query on Active-Active databases.

Expand Down
2 changes: 1 addition & 1 deletion content/operate/rc/changelog/august-2025.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,4 @@ tags:

### Active-Active on Redis Cloud BYOC

You can now deploy [Active-Active databases]({{< relref "/operate/rc/databases/create-database/create-active-active-database" >}}) to [Redis Cloud Bring your own Cloud]({{< relref "/operate/rc/subscriptions/bring-your-own-cloud" >}}).
You can now deploy [Active-Active databases]({{< relref "/operate/rc/databases/active-active/create-active-active-database" >}}) to [Redis Cloud Bring your own Cloud]({{< relref "/operate/rc/subscriptions/bring-your-own-cloud" >}}).
2 changes: 1 addition & 1 deletion content/operate/rc/databases/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ Here's how to perform a variety of tasks:
- [Create an Essentials database]({{< relref "/operate/rc/databases/create-database/create-essentials-database" >}})
- [Create a Pro database with a new subscription]({{< relref "/operate/rc/databases/create-database/create-pro-database-new" >}})
- [Create a Pro database in an existing subscription]({{< relref "/operate/rc/databases/create-database/create-pro-database-existing" >}})
- [Create an Active-Active database]({{< relref "/operate/rc/databases/create-database/create-active-active-database" >}})
- [Create an Active-Active database]({{< relref "/operate/rc/databases/active-active/create-active-active-database" >}})

- [View and edit databases]({{< relref "/operate/rc/databases/view-edit-database" >}})

Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,29 @@
---
Title: Active-Active Redis
linkTitle: Active-Active
alwaysopen: false
categories:
- docs
- operate
- rc
description: Overview of the Active-Active feature for Redis Cloud.
weight: 5
weight: 43
hideListLinks: true
aliases:
- /operate/rc/databases/configuration/active-active-redis/
---

Active-Active databases store data across multiple regions and availability zones. This improves scalability, performance, and availability, especially when compared to standalone databases.

To create Active-Active databases, you need a Redis Cloud Pro subscription that enables Active-Active Redis and defines the regions for each copy of your databases. See [Create an Active-Active database]({{< relref "/operate/rc/databases/create-database/create-active-active-database" >}}) for instructions.
To create Active-Active databases, you need a Redis Cloud Pro subscription that enables Active-Active Redis and defines the regions for each copy of your databases. See [Create an Active-Active database]({{< relref "/operate/rc/databases/active-active/create-active-active-database" >}}) for instructions.

Active-Active databases are distributed across multiple regions (geo-distribution). This improves performance by reducing latency for nearby users and improves availability by protecting against data loss in case of network or resource failure.

Active-Active databases allow read and write operations in each copy. Each copy eventually reflects changes made in other copies ([eventual consistency]({{< relref "/glossary#eventual-consistency" >}})). Conflict-free data types (CRDTs) synchronize read and write operations between copies. CRDTs ensure consistency and resolve conflicts.

Active-Active databases use TLS to synchronize data between regions. You can also use TLS to encrypt client connections. See [Transport Layer Security (TLS)]({{< relref "/operate/rc/security/database-security/tls-ssl.md" >}}) for more information.

When developing for Active-Active databases, you need to consider some important differences. See [Develop applications with Active-Active databases]({{< relref "/operate/rs/databases/active-active/develop/_index.md" >}}) for related information.
When developing for Active-Active databases, you need to consider some important differences. See [Develop applications with Active-Active databases]({{< relref "/operate/rc/databases/active-active/develop/_index.md" >}}) for related information.

{{< note >}}
Active-Active subscriptions on Redis Cloud are limited to a maximum of 10 regions and 10 databases.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ categories:
- rc
description: Shows how to create an Active-Active database
linkTitle: Create Active-Active database
weight: 20
weight: 5
aliases:
- /operate/rc/subscriptions/create-active-active-subscription
- /operate/rc/databases/create-database/create-active-active-database
---

Active-Active databases store data across multiple regions and availability zones. This improves scalability, performance, and availability, especially when compared to standalone databases. See [Active-Active Redis]({{< relref "/operate/rc/databases/configuration/active-active-redis" >}}) for more information.
Active-Active databases store data across multiple regions and availability zones. This improves scalability, performance, and availability, especially when compared to standalone databases. See [Active-Active Redis]({{< relref "/operate/rc/databases/active-active" >}}) for more information.

To deploy Active-Active databases in Redis Cloud, you need a Redis Cloud Pro plan that enables Active-Active Redis and defines the regions for each copy of your databases.

Expand Down Expand Up @@ -90,20 +91,16 @@ In the **Advanced options** section, you can:

- Define CIDR addresses for each region in the **VPC configuration** section.

Every CIDR should be unique to properly route network traffic between each Active-Active database instance and your consumer VPCs. The CIDR block regions should _not_ overlap between the Redis server and your app consumer VPCs. In addition, CIDR blocks should not overlap between cluster instances.

When all **Deployment CIDR** regions display a green checkmark, you're ready to continue.

{{<image filename="images/rc/icon-cidr-address-ok.png" width="30px" alt="Green checkmarks indicate valid CIDR address values." >}}

Red exclamation marks indicate error conditions; the tooltip provides additional details.

{{<image filename="images/rc/icon-cidr-address-error.png" width="30px" alt="Red exclamation points indicate CIDR address problems." >}}

If you chose to deploy your Active-Active database to an existing [Bring your own Cloud]({{< relref "/operate/rc/subscriptions/bring-your-own-cloud" >}}) account, you can also define the VPC ID for each region. Select **In existing VPC** and the set the VPC ID for each selected region.

{{< embed-md "rc-aa-cidr.md" >}}

If you chose to deploy your Active-Active database to an existing [Bring your own Cloud]({{< relref "/operate/rc/subscriptions/bring-your-own-cloud" >}}) account, you can also define the VPC ID for each region. Select **In existing VPC** and the set the VPC ID for each selected region.

- Set your [maintenance]({{< relref "/operate/rc/subscriptions/maintenance" >}}) settings in the **Maintenance windows** section. Select **Manual** if you want to set [manual maintenance windows]({{< relref "/operate/rc/subscriptions/maintenance/set-maintenance-windows" >}}).

{{< note >}}
Multi-AZ replication is required for all Active-Active databases.
{{< /note >}}

When finished, choose **Continue** to determine your size requirements.

{{<image filename="images/rc/button-subscription-continue.png" width="100px" alt="Select the Continue button to continue to the next step." >}}
Expand Down Expand Up @@ -319,8 +316,8 @@ Use the **Database list** to check the status of your databases.
## More info

- [Create a Pro database with a new subscription]({{< relref "/operate/rc/databases/create-database/create-pro-database-new" >}})
- [Active-Active Redis]({{< relref "/operate/rc/databases/configuration/active-active-redis" >}})
- [Develop applications with Active-Active databases]({{< relref "/operate/rs/databases/active-active/develop/_index.md" >}})
- [Active-Active Redis]({{< relref "/operate/rc/databases/active-active" >}})
- [Develop applications with Active-Active databases]({{< relref "/operate/rc/databases/active-active/develop/_index.md" >}})
- Database [memory limit]({{< relref "/operate/rc/databases/configuration/sizing#dataset-size" >}})
- Redis Cloud [subscription plans]({{< relref "/operate/rc/subscriptions/" >}})
- [Redis Cloud pricing](https://redis.io/pricing/#monthly)
Expand Down
52 changes: 52 additions & 0 deletions content/operate/rc/databases/active-active/develop/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
---
Title: Active-Active Redis applications
alwaysopen: false
categories:
- docs
- operate
- rc
description: General information to keep in mind while developing applications for
an Active-Active database.
hideListLinks: true
linktitle: Develop applications
weight: 99
note: The rest of the content in this folder is mounted from content/operate/rs/databases/active-active/develop. If you need to make a change in the pages in this folder, make it in the RS folder.
---
Developing globally distributed applications can be challenging, as
developers have to think about race conditions and complex combinations
of events under geo-failovers and cross-region write conflicts. In Redis Cloud, Active-Active databases
simplify developing such applications by directly using built-in smarts
for handling conflicting writes based on the data type in use. Instead
of depending on just simplistic "last-writer-wins" type conflict
resolution, geo-distributed Active-Active databases combine techniques defined in CRDT
(conflict-free replicated data types) research with Redis types to
provide smart and automatic conflict resolution based on the data type's
intent.

An Active-Active database is a globally distributed database that spans multiple cloud provider regions. Each Active-Active database can have many Active-Active database instances
that come with added smarts for handling globally distributed writes
using the proven
[CRDT](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type)
approach.
[CRDT](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type)
research describes a set of techniques for creating systems that can
handle conflicting writes. CRDBs powered by Multi-Master Replication
(MMR) provide a straightforward and effective way to replicate your
data between regions and simplify development of complex applications
that can maintain correctness under geo-failovers and concurrent
cross-region writes to the same data.

{{< image filename="/images/rs/crdbs.png" alt="Geo-replication world map">}}

Active-Active databases replicate data between multiple Redis Cloud provider regions. Common uses for Active-Active databases include disaster recovery,
geographically redundant applications, and keeping data closer to your
users' locations. MMR is always multi-directional amongst the regions
configured in the Active-Active database. For unidirectional replication, see [Active-Passive replication]({{< relref "/operate/rc/databases/migrate-databases#sync-using-active-passive" >}}).

## Example of synchronization

{{< embed-md "rc-rs-aa-synchronization.md" >}}

[Learn more about
synchronization for
each supported data type]({{< relref "/operate/rc/databases/active-active/develop/data-types/" >}}) and [how to develop applications]({{< relref "/operate/rc/databases/active-active/develop/develop-for-aa" >}}) with them on Redis Cloud.
Loading