diff --git a/content/operate/rs/databases/_index.md b/content/operate/rs/databases/_index.md index e6891bb4c8..bfd3661b33 100644 --- a/content/operate/rs/databases/_index.md +++ b/content/operate/rs/databases/_index.md @@ -15,7 +15,7 @@ weight: 37 You can manage your Redis Software databases with several different tools: - Cluster Manager UI (the web-based user interface) -- Command-line tools ([`rladmin`]({{< relref "/operate/rs/references/cli-utilities/rladmin" >}}), [`redis-cli`]({{< relref "/develop/tools/cli" >}}), [`crdb-cli`]({{< relref "/operate/rs/references/cli-utilities/crdb-cli" >}})) -- [REST API]({{< relref "/operate/rs/references/rest-api/_index.md" >}}) +- Command-line tools ([`rladmin`](/content/operate/rs/references/cli-utilities/rladmin/_index.md), [`redis-cli`](/content/develop/tools/cli.md), [`crdb-cli`](/content/operate/rs/references/cli-utilities/crdb-cli/_index.md)) +- [REST API](/content/operate/rs/references/rest-api/_index.md) diff --git a/content/operate/rs/databases/active-active/_index.md b/content/operate/rs/databases/active-active/_index.md index 17228e88d2..5f2764c75d 100644 --- a/content/operate/rs/databases/active-active/_index.md +++ b/content/operate/rs/databases/active-active/_index.md @@ -21,9 +21,9 @@ Active-Active databases also provide disaster recovery and accelerated data read ## High availability -The [high availability]({{< relref "/operate/rs/databases/durability-ha/" >}}) that Active-Active replication provides is built upon a number of Redis Software features (such as [clustering]({{< relref "/operate/rs/databases/durability-ha/clustering.md" >}}), [replication]({{< relref "/operate/rs/databases/durability-ha/replication.md" >}}), and [replica HA]({{< relref "/operate/rs/databases/configure/replica-ha.md" >}})) as well as some features unique to Active-Active ([multi-primary replication]({{}}), [automatic conflict resolution]({{}}), and [strong eventual consistency]({{}})). +The [high availability](/content/operate/rs/databases/durability-ha/_index.md) that Active-Active replication provides is built upon a number of Redis Software features (such as [clustering](/content/operate/rs/databases/durability-ha/clustering.md), [replication](/content/operate/rs/databases/durability-ha/replication.md), and [replica HA](/content/operate/rs/databases/configure/replica-ha.md)) as well as some features unique to Active-Active ([multi-primary replication](#multi-primary-replication/), [automatic conflict resolution](#conflict-resolution/), and [strong eventual consistency](#strong-eventual-consistency/)). -Clustering and replication are used together in Active-Active databases to distribute multiple copies of the dataset across multiple nodes and multiple clusters. As a result, a node or cluster is less likely to become a single point of failure. If a primary node or primary shard fails, a replica is automatically promoted to primary. To avoid having one node hold all copies of certain data, the [replica HA]({{< relref "/operate/rs/databases/configure/replica-ha.md" >}}) feature (enabled by default) automatically migrates replica shards to available nodes. +Clustering and replication are used together in Active-Active databases to distribute multiple copies of the dataset across multiple nodes and multiple clusters. As a result, a node or cluster is less likely to become a single point of failure. If a primary node or primary shard fails, a replica is automatically promoted to primary. To avoid having one node hold all copies of certain data, the [replica HA](/content/operate/rs/databases/configure/replica-ha.md) feature (enabled by default) automatically migrates replica shards to available nodes. ## Multi-primary replication @@ -31,34 +31,33 @@ In Redis Software, replication copies data from primary shards to replica shards Each participating cluster hosts an instance of your database, and each instance has its own primary node. Having multiple primary nodes means you can connect to the proxy in any of your participating clusters. Connecting to the closest cluster geographically enables near-local latency. Multi-primary replication (previously referred to as multi-master replication) also means that your users still have access to the database if one of the participating clusters fails. -{{< note >}} -Active-Active databases do not replicate the entire database, only the data. -Database configurations, LUA scripts, and other support info are not replicated. -{{< /note >}} +> [!NOTE] +> Active-Active databases do not replicate the entire database, only the data. +> Database configurations, LUA scripts, and other support info are not replicated. ## Syncer -Keeping multiple copies of the dataset consistent across multiple clusters is no small task. To achieve consistency between participating clusters, Redis Active-Active replication uses a process called the [syncer]({{< relref "/operate/rs/databases/active-active/syncer" >}}). +Keeping multiple copies of the dataset consistent across multiple clusters is no small task. To achieve consistency between participating clusters, Redis Active-Active replication uses a process called the [syncer](/content/operate/rs/databases/active-active/syncer.md). -The syncer keeps a [replication backlog]({{< relref "/operate/rs/databases/active-active/manage#replication-backlog/" >}}), which stores changes to the dataset that the syncer sends to other participating clusters. The syncer uses partial syncs to keep replicas up to date with changes, or a full sync in the event a replica or primary is lost. +The syncer keeps a [replication backlog](/content/operate/rs/databases/active-active/manage.md#replication-backlog/), which stores changes to the dataset that the syncer sends to other participating clusters. The syncer uses partial syncs to keep replicas up to date with changes, or a full sync in the event a replica or primary is lost. ## Conflict resolution Because you can connect to any participating cluster to perform a write operation, concurrent and conflicting writes are always possible. Conflict resolution is an important part of the Active-Active technology. Active-Active databases only use [conflict-free replicated data types (CRDTs)](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type). These data types provide a predictable conflict resolution and don't require any additional work from the application or client side. -When developing with CRDTs 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 with CRDTs for Active-Active databases, you need to consider some important differences. See [Develop applications with Active-Active databases](/content/operate/rs/databases/active-active/develop/_index.md) for related information. ## Strong eventual consistency Maintaining strong consistency for replicated databases comes with tradeoffs in scalability and availability. Redis Active-Active databases use a strong eventual consistency model, which means that local values may differ across replicas for short periods of time, but they all eventually converge to one consistent state. Redis uses vector clocks and the CRDT conflict resolution to strengthen consistency between replicas. You can also enable the causal consistency feature to preserve the order of operations as they are synchronized among replicas. -Other Redis Software features can also be used to enhance the performance, scalability, or durability of your Active-Active database. These include [data persistence]({{< relref "/operate/rs/databases/configure/database-persistence.md" >}}), [multiple active proxies]({{< relref "/operate/rs/databases/configure/proxy-policy.md" >}}), [distributed synchronization]({{< relref "/operate/rs/databases/active-active/synchronization-mode.md" >}}), [OSS Cluster API]({{< relref "/operate/rs/databases/configure/oss-cluster-api.md" >}}), and [rack-zone awareness]({{< relref "/operate/rs/clusters/configure/rack-zone-awareness.md" >}}). +Other Redis Software features can also be used to enhance the performance, scalability, or durability of your Active-Active database. These include [data persistence](/content/operate/rs/databases/configure/database-persistence.md), [multiple active proxies](/content/operate/rs/databases/configure/proxy-policy.md), [distributed synchronization](/content/operate/rs/databases/active-active/synchronization-mode.md), [OSS Cluster API](/content/operate/rs/databases/configure/oss-cluster-api.md), and [rack-zone awareness](/content/operate/rs/clusters/configure/rack-zone-awareness.md). ## Next steps -- [Plan your Active-Active deployment]({{< relref "/operate/rs/databases/active-active/planning.md" >}}) -- [Get started with Active-Active]({{< relref "/operate/rs/databases/active-active/get-started.md" >}}) -- [Create an Active-Active database]({{< relref "/operate/rs/databases/active-active/create.md" >}}) -- [Develop applications with Active-Active databases]({{}}) -- Review [disaster recovery strategies for Active-Active databases]({{< relref "/operate/rs/databases/active-active/disaster-recovery" >}}) \ No newline at end of file +- [Plan your Active-Active deployment](/content/operate/rs/databases/active-active/planning.md) +- [Get started with Active-Active](/content/operate/rs/databases/active-active/get-started.md) +- [Create an Active-Active database](/content/operate/rs/databases/active-active/create.md) +- [Develop applications with Active-Active databases](/content/operate/rs/databases/active-active/develop/develop-for-aa.md) +- Review [disaster recovery strategies for Active-Active databases](/content/operate/rs/databases/active-active/disaster-recovery/_index.md) \ No newline at end of file diff --git a/content/operate/rs/databases/active-active/connect.md b/content/operate/rs/databases/active-active/connect.md index cf31fd00a9..0da194e193 100644 --- a/content/operate/rs/databases/active-active/connect.md +++ b/content/operate/rs/databases/active-active/connect.md @@ -65,12 +65,11 @@ redis-cli is a simple command-line tool to interact with redis database. A simple python application running on the host machine can also connect to the database. -{{< note >}} -Before you continue, you must have python and -[redis-py](https://github.com/andymccurdy/redis-py#installation) -(python library for connecting to Redis) configured on the host machine -running the container. -{{< /note >}} +> [!NOTE] +> Before you continue, you must have python and +> [redis-py](https://github.com/andymccurdy/redis-py#installation) +> (python library for connecting to Redis) configured on the host machine +> running the container. 1. In the command-line terminal, create a new file called "redis_test.py" diff --git a/content/operate/rs/databases/active-active/create.md b/content/operate/rs/databases/active-active/create.md index d3b3360dc2..eb81a9f7c6 100644 --- a/content/operate/rs/databases/active-active/create.md +++ b/content/operate/rs/databases/active-active/create.md @@ -10,11 +10,11 @@ description: How to create an Active-Active database and things to consider when linkTitle: Create weight: 25 --- -[Active-Active geo-replicated databases]({{< relref "/operate/rs/databases/active-active" >}}) (formerly known as CRDBs) give applications write access +[Active-Active geo-replicated databases](/content/operate/rs/databases/active-active/_index.md) (formerly known as CRDBs) give applications write access to replicas of the dataset in different geographical locations. The participating Redis Software clusters that host the instances can be distributed in different geographic locations. -Every instance of an Active-Active database can receive write operations, and all operations are [synchronized]({{< relref "/operate/rs/databases/active-active/develop#example-of-synchronization" >}}) to all instances without conflict. +Every instance of an Active-Active database can receive write operations, and all operations are [synchronized](/content/operate/rs/databases/active-active/develop/_index.md#example-of-synchronization) to all instances without conflict. ## Steps to create an Active-Active database @@ -29,7 +29,7 @@ Every instance of an Active-Active database can receive write operations, and al - Two or more machines with the same version of Redis Software installed - Network connectivity and cluster FQDN name resolution between all participating clusters -- [Network time service]({{< relref "/operate/rs/databases/active-active#network-time-service-ntp-or-chrony" >}}) listener (ntpd) configured and running on each node in all clusters +- [Network time service](/content/operate/rs/databases/active-active/_index.md#network-time-service-ntp-or-chrony) listener (ntpd) configured and running on each node in all clusters ## Create an Active-Active database @@ -86,15 +86,15 @@ Every instance of an Active-Active database can receive write operations, and al {{Add cluster panel.}} - {{}} -If an Active-Active database [runs on flash memory]({{}}), you cannot add participating clusters that run on RAM only. - {{}} + > [!NOTE] + > If an Active-Active database [runs on flash memory](/content/operate/rs/databases/flash/_index.md), you cannot add participating clusters that run on RAM only. + > 1. Click **Join cluster** to add the cluster to the list of participating clusters. 1. Enter a **Database name**. -1. If your cluster supports [Redis Flex or Auto Tiering]({{< relref "/operate/rs/databases/flash/" >}}), in **Runs on** you can select **Flash** so that your database uses Flash memory. We recommend that you use AOF every 1 sec for the best performance during the initial Active-Active database sync of a new replica. +1. If your cluster supports [Redis Flex or Auto Tiering](/content/operate/rs/databases/flash/_index.md), in **Runs on** you can select **Flash** so that your database uses Flash memory. We recommend that you use AOF every 1 sec for the best performance during the initial Active-Active database sync of a new replica. 1. To configure additional database settings, expand each relevant section to make changes. @@ -118,28 +118,28 @@ If an Active-Active database [runs on flash memory]({{}} -You cannot change the [port number]({{< relref "/operate/rs/networking/port-configurations.md" >}}) -after the database is created. - {{< /note >}} + > [!NOTE] + > You cannot change the [port number](/content/operate/rs/networking/port-configurations.md) + > after the database is created. + > -- **Memory limit** - [Database memory limits]({{< relref "/operate/rs/databases/memory-performance/memory-limit.md" >}}) include all database replicas and shards, including replica shards in database replication and database shards in database clustering. +- **Memory limit** - [Database memory limits](/content/operate/rs/databases/memory-performance/memory-limit.md) include all database replicas and shards, including replica shards in database replication and database shards in database clustering. If the total size of the database in the cluster reaches the memory limit, the data eviction policy for the database is enforced. - {{< note >}} -If you create a database with Auto Tiering enabled, you also need to set the RAM-to-Flash ratio -for this database. Minimum RAM is 10%. Maximum RAM is 50%. - {{< /note >}} + > [!NOTE] + > If you create a database with Auto Tiering enabled, you also need to set the RAM-to-Flash ratio + > for this database. Minimum RAM is 10%. Maximum RAM is 50%. + > -- **Memory eviction** - The default [eviction policy]({{}}) for Active-Active databases is `noeviction`. Redis Software versions 6.0.20 and later support all eviction policies for Active-Active databases, unless [Redis Flex or Auto Tiering]({{}}) is enabled. +- **Memory eviction** - The default [eviction policy](/content/operate/rs/databases/memory-performance/eviction-policy.md) for Active-Active databases is `noeviction`. Redis Software versions 6.0.20 and later support all eviction policies for Active-Active databases, unless [Redis Flex or Auto Tiering](/content/operate/rs/databases/flash/_index.md) is enabled. -- [**Capabilities**]({{< relref "/operate/oss_and_stack/stack-with-enterprise" >}}) (previously **Modules**) - When you create a new in-memory database, you can enable additional capabilities in the database. You cannot enable them after database creation. +- [**Capabilities**](/content/operate/oss_and_stack/stack-with-enterprise/_index.md) (previously **Modules**) - When you create a new in-memory database, you can enable additional capabilities in the database. You cannot enable them after database creation. - Active-Active databases created with or upgraded to Redis version 8 or later automatically enable [Redis Search]({{}}) and [JSON]({{}}), which allows you to index, query, and perform full-text searches of nested JSON documents. + Active-Active databases created with or upgraded to Redis version 8 or later automatically enable [Redis Search](/content/operate/oss_and_stack/stack-with-enterprise/search/search-active-active.md) and [JSON](/content/operate/oss_and_stack/stack-with-enterprise/json/_index.md), which allows you to index, query, and perform full-text searches of nested JSON documents. For Auto Tiering databases, you can enable capabilities that support Auto Tiering. See [Redis Software and Redis Stack feature compatibility -]({{< relref "/operate/oss_and_stack/stack-with-enterprise/enterprise-capabilities" >}}) for compatibility details. +](/content/operate/oss_and_stack/stack-with-enterprise/enterprise-capabilities.md) for compatibility details. To add capabilities to the database: @@ -157,27 +157,27 @@ After you create the Active-Active database, you can set the TLS mode to **Requi ### High availability -- [**Replication**]({{< relref "/operate/rs/databases/durability-ha/replication" >}}) - We recommend that all Active-Active database use replication for best intercluster synchronization performance. +- [**Replication**](/content/operate/rs/databases/durability-ha/replication.md) - We recommend that all Active-Active database use replication for best intercluster synchronization performance. When replication is enabled, every Active-Active database master shard is replicated to a corresponding replica shard. The replica shards are then used to synchronize data between the instances, and the master shards are dedicated to handling client requests. -- [**Replica high availability**]({{< relref "/operate/rs/databases/configure/replica-ha" >}}) - We also recommend that you enable replica high availability to ensure replica shards are highly-available for this synchronization. +- [**Replica high availability**](/content/operate/rs/databases/configure/replica-ha.md) - We also recommend that you enable replica high availability to ensure replica shards are highly-available for this synchronization. ### Clustering -- In the [**Clustering**]({{}}) section, you can either: +- In the [**Clustering**](/content/operate/rs/databases/durability-ha/clustering.md) section, you can either: - - **Enable sharding** and select the number of shards you want to have in the database. When database clustering is enabled, databases have limitations for [multi-key operations]({{}}). + - **Enable sharding** and select the number of shards you want to have in the database. When database clustering is enabled, databases have limitations for [multi-key operations](/content/operate/rs/databases/durability-ha/clustering.md#multikey-operations). You can increase the number of shards in the database at any time. - - Clear the **Enable sharding** option to use only one shard, which allows you to use [multi-key operations]({{}}) without the limitations. + - Clear the **Enable sharding** option to use only one shard, which allows you to use [multi-key operations](/content/operate/rs/databases/durability-ha/clustering.md#multikey-operations) without the limitations. - {{}} -You cannot enable or turn off database clustering after the Active-Active database is created. - {{}} + > [!NOTE] + > You cannot enable or turn off database clustering after the Active-Active database is created. + > -- [**OSS Cluster API**]({{< relref "/operate/rs/databases/configure/oss-cluster-api.md" >}}) - The OSS Cluster API configuration allows access to multiple endpoints for increased throughput. The OSS Cluster API setting applies to all instances of the Active-Active database across participating clusters. +- [**OSS Cluster API**](/content/operate/rs/databases/configure/oss-cluster-api.md) - The OSS Cluster API configuration allows access to multiple endpoints for increased throughput. The OSS Cluster API setting applies to all instances of the Active-Active database across participating clusters. This configuration requires clients to connect to the primary node to retrieve the cluster topology before they can connect directly to proxies on each node. @@ -185,7 +185,7 @@ You cannot enable or turn off database clustering after the Active-Active databa ### Durability -To protect against loss of data stored in RAM, you can enable [**Persistence**]({{}}) to store a copy of the data on disk. +To protect against loss of data stored in RAM, you can enable [**Persistence**](/content/operate/rs/databases/configure/database-persistence.md) to store a copy of the data on disk. Active-Active databases support append-only file (AOF) persistence only. Snapshot persistence is not supported for Active-Active databases. @@ -193,13 +193,13 @@ Active-Active databases support append-only file (AOF) persistence only. Snapsho - **Unauthenticated access** - You can access the database as the default user without providing credentials. -- **Password-only authentication** - When you configure a password for your database's default user, all connections to the database must authenticate with the [AUTH command]({{< relref "/commands/auth" >}}). +- **Password-only authentication** - When you configure a password for your database's default user, all connections to the database must authenticate with the [AUTH command](/content/commands/auth.md). If you also configure an access control list, connections can specify other users for authentication, and requests are allowed according to the Redis ACLs specified for that user. Creating a database without ACLs enables a *default* user with full access to the database. You can secure default user access by requiring a password. -- **Access Control List** - You can specify the [user roles]({{< relref "/operate/rs/security/access-control/create-db-roles" >}}) that have access to the database and the [Redis ACLs]({{< relref "/operate/rs/security/access-control/redis-acl-overview" >}}) that apply to those connections. +- **Access Control List** - You can specify the [user roles](/content/operate/rs/security/access-control/create-db-roles.md) that have access to the database and the [Redis ACLs](/content/operate/rs/security/access-control/redis-acl-overview.md) that apply to those connections. You can only configure access control after the Active-Active database is created. In each participating cluster, add ACLs after database creation. @@ -207,19 +207,19 @@ Active-Active databases support append-only file (AOF) persistence only. Snapsho 1. In **Security > Access Control > Access Control List**, select **+ Add ACL**. - 1. Select a [role]({{< relref "/operate/rs/security/access-control/create-db-roles" >}}) to grant database access. + 1. Select a [role](/content/operate/rs/security/access-control/create-db-roles.md) to grant database access. - 1. Associate a [Redis ACL]({{< relref "/operate/rs/security/access-control/create-db-roles" >}}) with the role and database. + 1. Associate a [Redis ACL](/content/operate/rs/security/access-control/create-db-roles.md) with the role and database. 1. Select the check mark to add the ACL. ### Causal consistency -[**Causal consistency**]({{< relref "/operate/rs/databases/active-active/causal-consistency" >}}) in an Active-Active database guarantees that the order of operations on a specific key is maintained across all instances of an Active-Active database. +[**Causal consistency**](/content/operate/rs/databases/active-active/causal-consistency.md) in an Active-Active database guarantees that the order of operations on a specific key is maintained across all instances of an Active-Active database. To enable causal consistency for an existing Active-Active database, use the REST API. ## Test Active-Active database connections -With the Redis database created, you are ready to connect to your database. See [Connect to Active-Active databases]({{< relref "/operate/rs/databases/active-active/connect.md" >}}) for tutorials and examples of multiple connection methods. +With the Redis database created, you are ready to connect to your database. See [Connect to Active-Active databases](/content/operate/rs/databases/active-active/connect.md) for tutorials and examples of multiple connection methods. diff --git a/content/operate/rs/databases/active-active/delete.md b/content/operate/rs/databases/active-active/delete.md index 3b641c0209..c15729b525 100644 --- a/content/operate/rs/databases/active-active/delete.md +++ b/content/operate/rs/databases/active-active/delete.md @@ -13,9 +13,8 @@ weight: 35 When you delete an Active-Active database (formerly known as CRDB), all instances of the Active-Active database are deleted from all participating clusters. -{{% warning %}} -This action is immediate, non-reversible, and has no rollback. -{{% /warning %}} +> [!WARNING] +> This action is immediate, non-reversible, and has no rollback. Because Active-Active databases are made up of instances on multiple participating clusters, to restore a deleted Active-Active database you must create the database again with all of its instances @@ -24,5 +23,5 @@ and then restore the data to the database from backup. We recommended that you: - Back up your data and test the restore on another database before you delete an Active-Active database. -- Consider [flushing the data]({{< relref "/operate/rs/databases/import-export/flush.md" >}}) from the database +- Consider [flushing the data](/content/operate/rs/databases/import-export/flush.md) from the database so that you can keep the Active-Active database configuration and restore the data to it if necessary. diff --git a/content/operate/rs/databases/active-active/develop/_index.md b/content/operate/rs/databases/active-active/develop/_index.md index 3673750dc8..e7c4d24034 100644 --- a/content/operate/rs/databases/active-active/develop/_index.md +++ b/content/operate/rs/databases/active-active/develop/_index.md @@ -51,4 +51,4 @@ Replica Of capabilities in Redis Software. [Learn more about synchronization for -each supported data type]({{< relref "/operate/rs/databases/active-active/develop/data-types/" >}}) and [how to develop applications]({{< relref "/operate/rs/databases/active-active/develop/develop-for-aa.md" >}}) with them on Redis Software. +each supported data type](/content/operate/rs/databases/active-active/develop/data-types/_index.md) and [how to develop applications](/content/operate/rs/databases/active-active/develop/develop-for-aa.md) with them on Redis Software. diff --git a/content/operate/rs/databases/active-active/develop/app-failover-active-active.md b/content/operate/rs/databases/active-active/develop/app-failover-active-active.md index 187c9ce554..354c461f94 100644 --- a/content/operate/rs/databases/active-active/develop/app-failover-active-active.md +++ b/content/operate/rs/databases/active-active/develop/app-failover-active-active.md @@ -15,9 +15,8 @@ An application deployed with an Active-Active database connects to a replica of If that replica is not available, the application can failover to a remote replica, and failback again if necessary. In this article we explain how this process works. -{{}} -For other disaster recovery strategies including network-based, proxy-based, and client library approaches, see [Active-Active disaster recovery strategies]({{}}). -{{}} +> [!NOTE] +> For other disaster recovery strategies including network-based, proxy-based, and client library approaches, see [Active-Active disaster recovery strategies](/content/operate/rs/databases/active-active/disaster-recovery/_index.md). Active-Active connection failover can improve data availability, but can negatively impact data consistency. Active-Active replication, like Redis replication, is asynchronous. @@ -32,7 +31,7 @@ Your application can detect two types of failure: 1. **Local failures** - The local replica is down or otherwise unavailable 1. **Replication failures** - The local replica is available but fails to replicate to or from remote replicas -You can also use [database availability API requests]({{}}) to determine if a database replica is available to handle read and write operations. The lag-aware database availability requests considers CRDT replication lag as a health check criterion to prevent reading stale data during failback scenarios. +You can also use [database availability API requests](/content/operate/rs/monitoring/db-availability.md) to determine if a database replica is available to handle read and write operations. The lag-aware database availability requests considers CRDT replication lag as a health check criterion to prevent reading stale data during failback scenarios. ### Local Failures @@ -44,9 +43,8 @@ Replication failures are more difficult to detect reliably without causing false The most reliable method for health-checking replication is by using the Redis publish/subscribe (pub/sub) mechanism. -{{< note >}} -Note that this document does not suggest that Redis pub/sub is reliable in the common sense. Messages can get lost in certain conditions, but that is acceptable in this case because typically the application determines that replication is down only after not being able to deliver a number of messages over a period of time. -{{< /note >}} +> [!NOTE] +> Note that this document does not suggest that Redis pub/sub is reliable in the common sense. Messages can get lost in certain conditions, but that is acceptable in this case because typically the application determines that replication is down only after not being able to deliver a number of messages over a period of time. When you use the pub/sub data type to detect failures, the application: diff --git a/content/operate/rs/databases/active-active/develop/data-types/hyperloglog.md b/content/operate/rs/databases/active-active/develop/data-types/hyperloglog.md index d3be9f015d..6d9e51d550 100644 --- a/content/operate/rs/databases/active-active/develop/data-types/hyperloglog.md +++ b/content/operate/rs/databases/active-active/develop/data-types/hyperloglog.md @@ -17,8 +17,8 @@ Because it estimates the cardinality by probability, the HyperLogLog algorithm c ## HyperLogLog in Redis -Redis Open source implements [HyperLogLog]({{< relref "/develop/data-types/probabilistic/hyperloglogs" >}}) (HLL) as a native data structure. -It supports adding elements ([PFADD]({{< relref "/commands/pfadd" >}}) to an HLL, counting elements ([PFCOUNT]({{< relref "/commands/pfcount" >}}) of HLLs, and merging of ([PFMERGE]({{< relref "/commands/pfmerge" >}}) HLLs. +Redis Open source implements [HyperLogLog](/content/develop/data-types/probabilistic/hyperloglogs.md) (HLL) as a native data structure. +It supports adding elements ([PFADD](/content/commands/pfadd.md) to an HLL, counting elements ([PFCOUNT](/content/commands/pfcount.md) of HLLs, and merging of ([PFMERGE](/content/commands/pfmerge.md) HLLs. Here is an example of a simple write case: diff --git a/content/operate/rs/databases/active-active/develop/data-types/json.md b/content/operate/rs/databases/active-active/develop/data-types/json.md index 2756b0e31e..0727392350 100644 --- a/content/operate/rs/databases/active-active/develop/data-types/json.md +++ b/content/operate/rs/databases/active-active/develop/data-types/json.md @@ -19,9 +19,9 @@ 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 subscription]({{< relref "/operate/rc/databases/active-active/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 subscription](/content/operate/rc/databases/active-active/create-active-active-database.md#select-capabilities) in the Redis Cloud documentation for details. -In Redis Software, Active-Active databases created with or upgraded to Redis version 8 or later automatically enable JSON. For earlier Redis versions, see [Create an Active-Active JSON database]({{< relref "/operate/oss_and_stack/stack-with-enterprise/json/active-active#create-an-active-active-json-database" >}}) in the Redis Stack and Redis Software documentation for instructions. +In Redis Software, Active-Active databases created with or upgraded to Redis version 8 or later automatically enable JSON. For earlier Redis versions, see [Create an Active-Active JSON database](/content/operate/oss_and_stack/stack-with-enterprise/json/active-active.md#create-an-active-active-json-database) in the Redis Stack and Redis Software documentation for instructions. {{}} diff --git a/content/operate/rs/databases/active-active/develop/data-types/sorted-sets.md b/content/operate/rs/databases/active-active/develop/data-types/sorted-sets.md index e2d610d4a6..6c91bc82a3 100644 --- a/content/operate/rs/databases/active-active/develop/data-types/sorted-sets.md +++ b/content/operate/rs/databases/active-active/develop/data-types/sorted-sets.md @@ -10,9 +10,8 @@ description: Information about using sorted sets with an Active-Active database. linkTitle: Sorted sets weight: $weight --- -{{< note >}} -[Redis Geospatial (Geo)]({{< relref "/commands/GEOADD" >}}) is based on Sorted Sets, so the same Active-Active database development instructions apply to Geo. -{{< /note >}} +> [!NOTE] +> [Redis Geospatial (Geo)](/content/commands/geoadd.md) is based on Sorted Sets, so the same Active-Active database development instructions apply to Geo. Similar to Redis Sets, Redis Sorted Sets are non-repeating collections of Strings. The difference between the two is that every member of a diff --git a/content/operate/rs/databases/active-active/develop/data-types/streams.md b/content/operate/rs/databases/active-active/develop/data-types/streams.md index ac76ad3d4f..0e46f386b6 100644 --- a/content/operate/rs/databases/active-active/develop/data-types/streams.md +++ b/content/operate/rs/databases/active-active/develop/data-types/streams.md @@ -10,7 +10,7 @@ description: Information about using streams with an Active-Active database. linkTitle: Streams weight: $weight --- -A [Redis Stream]({{< relref "/develop/data-types/streams" >}}) is a data structure that acts like an append-only log. +A [Redis Stream](/content/develop/data-types/streams/_index.md) is a data structure that acts like an append-only log. Each stream entry consists of: - A unique, monotonically increasing ID @@ -63,11 +63,10 @@ In the example below, we write to a stream concurrently from two regions. Notice Notice also that the synchronized streams contain no duplicate IDs. As long as you allow the database to generate your stream IDs, you'll never have more than one stream entry with the same ID. -{{< note >}} -Redis Open Source uses one radix tree (referred to as `rax` in the code base) to implement each stream. However, Active-Active databases implement a single logical stream using one `rax` per region. -Each region adds entries only to its associated `rax` (but can remove entries from all `rax` trees). -This means that XREAD and XREADGROUP iterate simultaneously over all `rax` trees and return the appropriate entry by comparing the entry IDs from each `rax`. -{{< /note >}} +> [!NOTE] +> Redis Open Source uses one radix tree (referred to as `rax` in the code base) to implement each stream. However, Active-Active databases implement a single logical stream using one `rax` per region. +> Each region adds entries only to its associated `rax` (but can remove entries from all `rax` trees). +> This means that XREAD and XREADGROUP iterate simultaneously over all `rax` trees and return the appropriate entry by comparing the entry IDs from each `rax`. ### Conflict resolution @@ -145,9 +144,8 @@ Because Active-Active databases replicate asynchronously, providing your own IDs In this scenario, two entries with the ID `100-1` are added at _t1_. After syncing, the stream `x` contains two entries with the same ID. -{{< note >}} -Stream IDs in Redis Open Source consist of two integers separated by a dash ('-'). When the server generates the ID, the first integer is the current time in milliseconds, and the second integer is a sequence number. So, the format for stream IDs is MS-SEQ. -{{< /note >}} +> [!NOTE] +> Stream IDs in Redis Open Source consist of two integers separated by a dash ('-'). When the server generates the ID, the first integer is the current time in milliseconds, and the second integer is a sequence number. So, the format for stream IDs is MS-SEQ. To prevent duplicate IDs and to comply with the original Redis streams design, Active-Active databases provide three ID modes for XADD: @@ -157,9 +155,8 @@ To prevent duplicate IDs and to comply with the original Redis streams design, A The default and recommended mode is _strict_, which prevents duplicate IDs. -{{% warning %}} -Why do you want to prevent duplicate IDs? First, XDEL, XCLAIM, and other commands can affect more than one entry when duplicate IDs are present in a stream. Second, duplicate entries may be removed if a database is exported or renamed. -{{% /warning %}} +> [!WARNING] +> Why do you want to prevent duplicate IDs? First, XDEL, XCLAIM, and other commands can affect more than one entry when duplicate IDs are present in a stream. Second, duplicate entries may be removed if a database is exported or renamed. To change XADD's ID generation mode, use the `rladmin` command-line utility: @@ -209,15 +206,14 @@ Active-Active databases fully support consumer groups with Redis Streams. Here i | _t4_ | `XINFO GROUPS x`
**→ [group1, group2]** | `XINFO GROUPS x`
**→ [group1, group2]** | -{{< note >}} -Redis Open Source uses one radix tree (`rax`) to hold the global pending entries list and another `rax` for each consumer's PEL. -The global PEL is a unification of all consumer PELs, which are disjoint. - -An Active-Active database stream maintains a global PEL and a per-consumer PEL for each region. - -When given an ID different from the special ">" ID, XREADGROUP iterates simultaneously over all of the PELs for all consumers. -It returns the next entry by comparing entry IDs from the different PELs. -{{< /note >}} +> [!NOTE] +> Redis Open Source uses one radix tree (`rax`) to hold the global pending entries list and another `rax` for each consumer's PEL. +> The global PEL is a unification of all consumer PELs, which are disjoint. +> +> An Active-Active database stream maintains a global PEL and a per-consumer PEL for each region. +> +> When given an ID different from the special ">" ID, XREADGROUP iterates simultaneously over all of the PELs for all consumers. +> It returns the next entry by comparing entry IDs from the different PELs. ### Conflict resolution diff --git a/content/operate/rs/databases/active-active/develop/data-types/strings.md b/content/operate/rs/databases/active-active/develop/data-types/strings.md index a7e37e7cc7..0ccf099682 100644 --- a/content/operate/rs/databases/active-active/develop/data-types/strings.md +++ b/content/operate/rs/databases/active-active/develop/data-types/strings.md @@ -12,15 +12,14 @@ weight: $weight --- Active-Active databases support both strings and bitfields. -{{}} -Active-Active **bitfield** support was added in RS version 6.0.20. -{{}} +> [!NOTE] +> Active-Active **bitfield** support was added in RS version 6.0.20. Changes to both of these data structures will be replicated across Active-Active member databases. ## Replication semantics -Except in the case of [string counters]({{< relref "#string-counter-support" >}}) (see below), both strings and bitfields are replicated using a "last write wins" approach. The reason for this is that strings and bitfields are effectively binary objects. So, unlike with lists, sets, and hashes, the conflict resolution semantics of a given operation on a string or bitfield are undefined. +Except in the case of [string counters](#string-counter-support) (see below), both strings and bitfields are replicated using a "last write wins" approach. The reason for this is that strings and bitfields are effectively binary objects. So, unlike with lists, sets, and hashes, the conflict resolution semantics of a given operation on a string or bitfield are undefined. ### How "last write wins" works @@ -42,7 +41,7 @@ time (t2) wins over the update at t1. ### String counter support -When you're using a string as counter (for instance, with the [INCR]({{< relref "/commands/incr" >}}) or [INCRBY]({{< relref "/commands/incrby" >}}) commands), +When you're using a string as counter (for instance, with the [INCR](/content/commands/incr.md) or [INCRBY](/content/commands/incrby.md) commands), then conflicts will be resolved semantically. On conflicting writes, counters accumulate the total counter operations @@ -66,7 +65,6 @@ concurrent writes. | t8 | — Sync — | — Sync — | | t9 | GET counter
13 | GET counter
13 | -{{< note >}} -Active-Active databases support 59-bit counters. -This limitation is to protect from overflowing a counter in a concurrent operation. -{{< /note >}} +> [!NOTE] +> Active-Active databases support 59-bit counters. +> This limitation is to protect from overflowing a counter in a concurrent operation. diff --git a/content/operate/rs/databases/active-active/develop/develop-for-aa.md b/content/operate/rs/databases/active-active/develop/develop-for-aa.md index 86378bee65..80c5cfaf6d 100644 --- a/content/operate/rs/databases/active-active/develop/develop-for-aa.md +++ b/content/operate/rs/databases/active-active/develop/develop-for-aa.md @@ -50,7 +50,7 @@ Databases provide various approaches to address some of these concerns: - **Active-Passive geo-distributed deployments**: With active-passive distributions, all writes go to an active cluster. Redis Sofware - provides a [Replica Of]({{}}) capability that provides a similar approach. + provides a [Replica Of](/content/operate/rs/databases/import-export/replica-of/_index.md) capability that provides a similar approach. This can be employed when the workload is heavily balanced toward reads and few writes. However, WAN performance and availability can be unreliable, and traveling large distances for writes takes away @@ -98,9 +98,9 @@ execute them in script-replication mode. ## Eviction -The default policy for Active-Active databases is _noeviction_ mode. Redis Software version 6.0.20 and later support all eviction policies for Active-Active databases, unless [Redis Flex or Auto Tiering]({{< relref "/operate/rs/databases/flash" >}}) (previously known as Redis on Flash) is enabled. +The default policy for Active-Active databases is _noeviction_ mode. Redis Software version 6.0.20 and later support all eviction policies for Active-Active databases, unless [Redis Flex or Auto Tiering](/content/operate/rs/databases/flash/_index.md) (previously known as Redis on Flash) is enabled. -For details, see [eviction for Active-Active databases (Redis Software)]({{< relref "/operate/rs/databases/memory-performance/eviction-policy#active-active-database-eviction" >}}) or [eviction for Active-Active databases (Redis Cloud)]({{< relref "/operate/rc/databases/configuration/data-eviction-policies#active-active-replication-considerations" >}}). +For details, see [eviction for Active-Active databases (Redis Software)](/content/operate/rs/databases/memory-performance/eviction-policy.md#active-active-database-eviction) or [eviction for Active-Active databases (Redis Cloud)](/content/operate/rc/databases/configuration/data-eviction-policies.md#active-active-replication-considerations). ## Expiration @@ -145,9 +145,9 @@ Furthermore, a replica that is not the owner of the expired value: - Expires it (sending a DEL) before making any modifications if a user attempts to access it in WRITE mode. - {{< note >}} -Expiration values are in the range of [0, 2^49] for Active-Active databases and [0, 2^64] for regular databases. - {{< /note >}} + > [!NOTE] + > Expiration values are in the range of [0, 2^49] for Active-Active databases and [0, 2^64] for regular databases. + > ## Tombstones diff --git a/content/operate/rs/databases/active-active/disaster-recovery/_index.md b/content/operate/rs/databases/active-active/disaster-recovery/_index.md index 7b08a01fda..d71858dc69 100644 --- a/content/operate/rs/databases/active-active/disaster-recovery/_index.md +++ b/content/operate/rs/databases/active-active/disaster-recovery/_index.md @@ -20,13 +20,13 @@ However, because Active-Active Redis databases do not have a built-in [failover] Depending on your requirements for Recovery Point Objective, Recovery Time Objective, consistency, scalability, resources, maintainability, and other factors, choose one of the following strategies to fail over to a secondary Active-Active member or fail back to the primary member: -- [Network-based]({{}}): Global traffic managers and load balancers handle routing at the network layer, requiring no application changes. +- [Network-based](/content/operate/rs/databases/active-active/disaster-recovery/network-based.md): Global traffic managers and load balancers handle routing at the network layer, requiring no application changes. -- [Proxy-based]({{}}): Software proxies handle detection and routing logic. +- [Proxy-based](/content/operate/rs/databases/active-active/disaster-recovery/proxy-based.md): Software proxies handle detection and routing logic. -- [Client library-based]({{}}): Redis client libraries with built-in failover logic. +- [Client library-based](/content/operate/rs/databases/active-active/disaster-recovery/client-library-based.md): Redis client libraries with built-in failover logic. -- [Application-based]({{}}): Custom application-level monitoring and connectivity management. +- [Application-based](/content/operate/rs/databases/active-active/disaster-recovery/application-based.md): Custom application-level monitoring and connectivity management. ## Considerations for disaster recovery @@ -52,7 +52,7 @@ When implementing a disaster recovery strategy for an Active-Active database, co - Does the application connect to the Active-Active database using a Redis client library or through a development framework or ecosystem? -- Does the Active-Active database use DNS, the [OSS Cluster API]({{}}), or the [discovery service]({{}})? +- Does the Active-Active database use DNS, the [OSS Cluster API](/content/operate/rs/clusters/optimize/oss-cluster-api.md), or the [discovery service](/content/operate/rs/databases/durability-ha/discovery-service.md)? - Is rate-limiting control needed? @@ -68,11 +68,10 @@ To determine which health checks to use, consider factors such as detection spee Lag-aware database availability requests are the recommended method to detect database failures in Redis Software deployments. This method guarantees that all the shards of a clustered database are connectable. -See [Lag-aware database availability requests]({{}}) for more information. +See [Lag-aware database availability requests](/content/operate/rs/monitoring/db-availability.md#lag-aware) for more information. -{{}} -Lag-aware database availability requests are not supported for Redis Cloud databases. -{{}} +> [!NOTE] +> Lag-aware database availability requests are not supported for Redis Cloud databases. ### Redis connection health checks @@ -80,7 +79,7 @@ You can use an existing connection to the database to check its availability. #### PING command -The [`PING`]({{}}) command checks that the database endpoint is available and the application can connect to the database. +The [`PING`](/content/commands/ping.md) command checks that the database endpoint is available and the application can connect to the database. #### Connection timeouts or Redis errors @@ -90,7 +89,7 @@ By capturing connection errors, you can determine when to fail over to a seconda You can also implement custom health checks. -For example, you can check the keyspace with write operations such as using the [`SET`]({{}}) command to write arbitrary data. This check verifies that database shards are available and writable. +For example, you can check the keyspace with write operations such as using the [`SET`](/content/commands/set.md) command to write arbitrary data. This check verifies that database shards are available and writable. For example: diff --git a/content/operate/rs/databases/active-active/disaster-recovery/application-based.md b/content/operate/rs/databases/active-active/disaster-recovery/application-based.md index dd813a45f0..41ffcaa07a 100644 --- a/content/operate/rs/databases/active-active/disaster-recovery/application-based.md +++ b/content/operate/rs/databases/active-active/disaster-recovery/application-based.md @@ -13,4 +13,4 @@ weight: 40 For complete control over failover and failback, you can implement disaster recovery mechanisms directly in the application server. -For more information, see [Application failover with Active-Active databases]({{}}). +For more information, see [Application failover with Active-Active databases](/content/operate/rs/databases/active-active/develop/app-failover-active-active.md). diff --git a/content/operate/rs/databases/active-active/disaster-recovery/client-library-based.md b/content/operate/rs/databases/active-active/disaster-recovery/client-library-based.md index 0366619277..18bfca2542 100644 --- a/content/operate/rs/databases/active-active/disaster-recovery/client-library-based.md +++ b/content/operate/rs/databases/active-active/disaster-recovery/client-library-based.md @@ -41,19 +41,19 @@ The following diagram shows a client library-based disaster recovery approach: Diagram of client libraries routing traffic to Active-Active database members -The following diagram shows a client-based disaster recovery approach that also uses [connection pooling]({{}}): +The following diagram shows a client-based disaster recovery approach that also uses [connection pooling](/content/develop/clients/pools-and-muxing.md#connection-pooling):
Diagram of client libraries with connection pooling routing traffic to Active-Active database members
For additional information, see the the introduction to -[Client-side geographic failover]({{}}) +[Client-side geographic failover](/content/develop/clients/failover.md) and also the following client library guides for failover and failback: -- [Jedis (Java)]({{}}) +- [Jedis (Java)](/content/develop/clients/jedis/failover.md) -- [Lettuce (Java)]({{}}) +- [Lettuce (Java)](/content/develop/clients/lettuce/failover.md) -- [redis-py (Python)]({{}}) +- [redis-py (Python)](/content/develop/clients/redis-py/failover.md) diff --git a/content/operate/rs/databases/active-active/get-started.md b/content/operate/rs/databases/active-active/get-started.md index c90333be59..75d3e9c73f 100644 --- a/content/operate/rs/databases/active-active/get-started.md +++ b/content/operate/rs/databases/active-active/get-started.md @@ -21,13 +21,12 @@ clusters for test and development environments. Here are the steps: 1. Test connectivity to the Active-Active database. -To run an Active-Active database on installations from the [Redis Software download package]({{< relref "/operate/rs/installing-upgrading/quickstarts/redis-enterprise-software-quickstart" >}}), +To run an Active-Active database on installations from the [Redis Software download package](/content/operate/rs/installing-upgrading/quickstarts/redis-enterprise-software-quickstart.md), set up two Redis Software installations and continue from Step 2. -{{}} -This getting started guide is for development or demonstration environments. -For production environments, see [Create an Active-Active geo-replicated database]({{< relref "/operate/rs/databases/active-active/create" >}}) for instructions. -{{}} +> [!NOTE] +> This getting started guide is for development or demonstration environments. +> For production environments, see [Create an Active-Active geo-replicated database](/content/operate/rs/databases/active-active/create.md) for instructions. ## Run two containers @@ -41,22 +40,21 @@ docker run -d --cap-add sys_resource -h rs1_node1 --name rs1_node1 -p 8443:8443 docker run -d --cap-add sys_resource -h rs2_node1 --name rs2_node1 -p 8445:8443 -p 9445:9443 -p 12002:12000 redislabs/redis ``` -{{}} -The `-h` option sets the hostname of the container, which is important for cluster setup and identification. - -The `--name` option assigns a name to the container, making it easier to manage and reference with Docker commands. - -The `-p` options map the Cluster Manager UI port (8443), REST API port (9443), and database access port differently for each container to make sure that all containers can be accessed from the host OS that is running the containers. -{{}} +> [!NOTE] +> The `-h` option sets the hostname of the container, which is important for cluster setup and identification. +> +> The `--name` option assigns a name to the container, making it easier to manage and reference with Docker commands. +> +> The `-p` options map the Cluster Manager UI port (8443), REST API port (9443), and database access port differently for each container to make sure that all containers can be accessed from the host OS that is running the containers. ## Set up two clusters 1. For cluster 1, go to `https://localhost:8443` in a browser on the host machine to access the Redis Software Cluster Manager UI. - {{}} -Depending on your browser, you may see a certificate error. Continue to the website. - {{}} + > [!NOTE] + > Depending on your browser, you may see a certificate error. Continue to the website. + > 1. Click **Create new cluster**: @@ -90,9 +88,8 @@ Depending on your browser, you may see a certificate error. Continue to the webs Now you have two Redis Software clusters with FQDNs `cluster1.local` and `cluster2.local`. -{{}} -Each Active-Active instance must have a unique fully-qualified domain name (FQDN). -{{}} +> [!NOTE] +> Each Active-Active instance must have a unique fully-qualified domain name (FQDN). ## Create an Active-Active database @@ -140,20 +137,20 @@ Each Active-Active instance must have a unique fully-qualified domain name (FQDN 1. In the **Clustering** section, either: - Make sure that **Sharding** is enabled and select the number of shards you want to have in the database. When database clustering is enabled, - databases are subject to limitations on [Multi-key commands]({{< relref "/operate/rs/databases/durability-ha/clustering" >}}). + databases are subject to limitations on [Multi-key commands](/content/operate/rs/databases/durability-ha/clustering.md). You can increase the number of shards in the database at any time. - - Turn off **Sharding** to use only one shard and avoid [Multi-key command]({{< relref "/operate/rs/databases/durability-ha/clustering" >}}) limitations. + - Turn off **Sharding** to use only one shard and avoid [Multi-key command](/content/operate/rs/databases/durability-ha/clustering.md) limitations. - {{< note >}} -You cannot enable or turn off database clustering after the Active-Active database is created. - {{< /note >}} + > [!NOTE] + > You cannot enable or turn off database clustering after the Active-Active database is created. + > 1. Click **Create**. - {{< note >}} -{{< embed-md "docker-memory-limitation.md" >}} - {{< /note >}} + > [!NOTE] + > {{< embed-md "docker-memory-limitation.md" >}} + > 1. After the Active-Active database is created, sign in to the Cluster Manager UIs for cluster 1 at `https://localhost:8443` and cluster 2 at `https://localhost:8445`. @@ -168,4 +165,4 @@ You cannot enable or turn off database clustering after the Active-Active databa ## Test connection With the Redis database created, you are ready to connect to your -database. See [Connect to Active-Active databases]({{< relref "/operate/rs/databases/active-active/connect" >}}) for tutorials and examples of multiple connection methods. +database. See [Connect to Active-Active databases](/content/operate/rs/databases/active-active/connect.md) for tutorials and examples of multiple connection methods. diff --git a/content/operate/rs/databases/active-active/manage.md b/content/operate/rs/databases/active-active/manage.md index 02b7819328..a748628ed7 100644 --- a/content/operate/rs/databases/active-active/manage.md +++ b/content/operate/rs/databases/active-active/manage.md @@ -23,9 +23,8 @@ As of Redis Software version 8.0.16, the Cluster Manager UI supports both [globa Global configuration changes are applied to all participating clusters in the Active-Active database. However, if your Active-Active mesh contains local configurations, they will continue to override global settings on the database instances where they are applied. -{{< warning >}} -Applying global configuration changes will override any local settings created using the API or earlier Cluster Manager UI versions. To keep local changes, manage them in the [**Local** configuration tab](#change-local-configuration). -{{< /warning >}} +> [!WARNING] +> Applying global configuration changes will override any local settings created using the API or earlier Cluster Manager UI versions. To keep local changes, manage them in the [**Local** configuration tab](#change-local-configuration).
@@ -47,7 +46,7 @@ To make global configuration changes in the Cluster Manager UI: -tab-sep- -To change the global configuration from the command line, use [`crdb-cli crdb update`]({{< relref "/operate/rs/references/cli-utilities/crdb-cli/crdb/update" >}}): +To change the global configuration from the command line, use [`crdb-cli crdb update`](/content/operate/rs/references/cli-utilities/crdb-cli/crdb/update.md): ```sh crdb-cli crdb update --crdb-guid -- @@ -81,7 +80,7 @@ To change the local configuration in the Cluster Manager UI: -tab-sep- -To change the local configuration from the command line, use [`rladmin tune db`]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-db" >}}): +To change the local configuration from the command line, use [`rladmin tune db`](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-db): ```sh rladmin tune db { db: | } @@ -108,7 +107,7 @@ On the **Local** configuration tab, any locally configured settings that differ ## Participating clusters You can add and remove participating clusters of an Active-Active database to change the topology. -To manage the changes to Active-Active topology, use [`crdb-cli`]({{< relref "/operate/rs/references/cli-utilities/crdb-cli/" >}}) or the participating clusters list in the Cluster Manager UI. +To manage the changes to Active-Active topology, use [`crdb-cli`](/content/operate/rs/references/cli-utilities/crdb-cli/_index.md) or the participating clusters list in the Cluster Manager UI. ### Add participating clusters @@ -119,9 +118,8 @@ After you add new participating clusters to an existing Active-Active database, the new database instance can accept connections and read operations. The new instance does not accept write operations until it is in the syncing state. -{{}} -If an Active-Active database [runs on flash memory]({{}}), you cannot add participating clusters that run on RAM only. -{{}} +> [!NOTE] +> If an Active-Active database [runs on flash memory](/content/operate/rs/databases/flash/_index.md), you cannot add participating clusters that run on RAM only. To add a new participating cluster to an existing Active-Active configuration using the Cluster Manager UI: @@ -165,13 +163,13 @@ To remove a participating cluster using the Cluster Manager UI: ## Replication backlog -Redis databases that use [replication for high availability]({{< relref "/operate/rs/databases/durability-ha/replication.md" >}}) maintain a replication backlog (per shard) to synchronize the primary and replica shards of a database. In addition to the database replication backlog, Active-Active databases maintain a backlog (per shard) to synchronize the database instances between clusters. +Redis databases that use [replication for high availability](/content/operate/rs/databases/durability-ha/replication.md) maintain a replication backlog (per shard) to synchronize the primary and replica shards of a database. In addition to the database replication backlog, Active-Active databases maintain a backlog (per shard) to synchronize the database instances between clusters. By default, both the database and Active-Active replication backlogs are set to one percent (1%) of the database size divided by the number of shards. This can range between 1MB to 250MB per shard for each backlog. ### Change the replication backlog size -Use the [`crdb-cli`]({{< relref "/operate/rs/references/cli-utilities/crdb-cli" >}}) utility to control the size of the replication backlogs. You can set it to `auto` or set a specific size. +Use the [`crdb-cli`](/content/operate/rs/references/cli-utilities/crdb-cli/_index.md) utility to control the size of the replication backlogs. You can set it to `auto` or set a specific size. Update the database replication backlog configuration with the `crdb-cli` command shown below. diff --git a/content/operate/rs/databases/active-active/planning.md b/content/operate/rs/databases/active-active/planning.md index 2dbe13a94f..ee997329de 100644 --- a/content/operate/rs/databases/active-active/planning.md +++ b/content/operate/rs/databases/active-active/planning.md @@ -15,21 +15,20 @@ In Redis Software, Active-Active geo-distribution is based on [conflict-free rep Because of the complexities of Active-Active databases, there are special considerations to keep in mind while planning your Active-Active database. -See [Active-Active Redis]({{< relref "/operate/rs/databases/active-active/" >}}) for more information about geo-distributed replication. For more info on other high availability features, see [Durability and high availability]({{< relref "/operate/rs/databases/durability-ha/" >}}). +See [Active-Active Redis](/content/operate/rs/databases/active-active/_index.md) for more information about geo-distributed replication. For more info on other high availability features, see [Durability and high availability](/content/operate/rs/databases/durability-ha/_index.md). ## Participating clusters -You need at least [two participating clusters]({{< relref "/operate/rs/clusters/new-cluster-setup" >}}) for an Active-Active database. If your database requires more than ten participating clusters, contact Redis support. You can [add or remove participating clusters]({{< relref "/operate/rs/databases/active-active/manage#participating-clusters/" >}}) after database creation. +You need at least [two participating clusters](/content/operate/rs/clusters/new-cluster-setup.md) for an Active-Active database. If your database requires more than ten participating clusters, contact Redis support. You can [add or remove participating clusters](/content/operate/rs/databases/active-active/manage.md#participating-clusters/) after database creation. -{{}} -If an Active-Active database [runs on flash memory]({{}}), you cannot add participating clusters that run on RAM only. -{{}} +> [!NOTE] +> If an Active-Active database [runs on flash memory](/content/operate/rs/databases/flash/_index.md), you cannot add participating clusters that run on RAM only. For Redis Software versions earlier than 8.0.16, changes made from the Cluster Manager UI to an Active-Active database configuration only apply to the cluster you are editing. For global configuration changes across all clusters, use the `crdb-cli` command-line utility. As of Redis Software version 8.0.16, the Cluster Manager UI supports both global and local configuration changes for Active-Active databases. ## Memory limits -Database memory limits define the maximum size of your database across all database replicas and [shards]({{< relref "/operate/rs/references/terminology.md#redis-instance-shard" >}}) on the cluster. Your memory limit also determines the number of shards. +Database memory limits define the maximum size of your database across all database replicas and [shards](/content/operate/rs/references/terminology.md#redis-instance-shard) on the cluster. Your memory limit also determines the number of shards. Besides your dataset, the memory limit must also account for replication, Active-Active metadata, and module overhead. These features can increase your database size, sometimes increasing it by two times or more. @@ -37,16 +36,16 @@ Factors to consider when sizing your database: - **dataset size**: you want your limit to be above your dataset size to leave room for overhead. - **database throughput**: high throughput needs more shards, leading to a higher memory limit. -- [**modules**]({{< relref "/operate/oss_and_stack/stack-with-enterprise" >}}): using modules with your database can consume more memory. -- [**database clustering**]({{< relref "/operate/rs/databases/durability-ha/clustering.md" >}}): enables you to spread your data into shards across multiple nodes (scale out). -- [**database replication**]({{< relref "/operate/rs/databases/durability-ha/replication.md" >}}): enabling replication doubles memory consumption -- [**Active-Active replication**]({{< relref "/operate/rs/databases/active-active/_index.md" >}}): enabling Active-Active replication requires double the memory of regular replication, which can be up to two times (2x) the original data size per instance. -- [**database replication backlog**]({{< relref "/operate/rs/databases/active-active/manage#replication-backlog/" >}}) for synchronization between shards. By default, this is set to 1% of the database size. -- [**Active-Active replication backlog**]({{< relref "/operate/rs/databases/active-active/manage.md" >}}) for synchronization between clusters. By default, this is set to 1% of the database size. +- [**modules**](/content/operate/oss_and_stack/stack-with-enterprise/_index.md): using modules with your database can consume more memory. +- [**database clustering**](/content/operate/rs/databases/durability-ha/clustering.md): enables you to spread your data into shards across multiple nodes (scale out). +- [**database replication**](/content/operate/rs/databases/durability-ha/replication.md): enabling replication doubles memory consumption +- [**Active-Active replication**](/content/operate/rs/databases/active-active/_index.md): enabling Active-Active replication requires double the memory of regular replication, which can be up to two times (2x) the original data size per instance. +- [**database replication backlog**](/content/operate/rs/databases/active-active/manage.md#replication-backlog/) for synchronization between shards. By default, this is set to 1% of the database size. +- [**Active-Active replication backlog**](/content/operate/rs/databases/active-active/manage.md) for synchronization between clusters. By default, this is set to 1% of the database size. It's also important to know Active-Active databases have a lower threshold for activating the eviction policy, because it requires propagation to all participating clusters. The eviction policy starts to evict keys when one of the Active-Active instances reaches 80% of its memory limit. -For more information on memory limits, see [Memory and performance]({{< relref "/operate/rs/databases/memory-performance/" >}}) or [Database memory limits]({{< relref "/operate/rs/databases/memory-performance/memory-limit.md" >}}). +For more information on memory limits, see [Memory and performance](/content/operate/rs/databases/memory-performance/_index.md) or [Database memory limits](/content/operate/rs/databases/memory-performance/memory-limit.md). ### Replication OOM protection @@ -56,7 +55,7 @@ When a shard in an Active-Active database reaches an out-of-memory (OOM) conditi 1. The syncer process sends commands to the affected shard to trigger garbage collection and free memory. -If the database has no [eviction policy]({{}}) and no keys with [expiration times (TTL)]({{}}), no memory can be freed, which can lead to persistent replication failure and data desynchronization. +If the database has no [eviction policy](/content/operate/rs/databases/memory-performance/eviction-policy.md) and no keys with [expiration times (TTL)](/content/develop/using-commands/keyspace.md#key-expiration), no memory can be freed, which can lead to persistent replication failure and data desynchronization. To reduce this risk, Active-Active databases running Redis version 8.4 or later support a configurable memory buffer through the `replication_oom_threshold_percent` setting. This setting reserves a percentage of memory below `maxmemory` for internal replication operations. @@ -68,7 +67,7 @@ The `replication_oom_threshold_percent` setting works as follows: - If memory reaches `maxmemory` despite the client block, the standard out-of-memory behavior applies to all operations, including replication. -`replication_oom_threshold_percent` defaults to `5`, which means 5% of `maxmemory` is reserved. To adjust the reserved percentage in all participating clusters, use an [update Active-Active database configuration]({{}}) REST API request: +`replication_oom_threshold_percent` defaults to `5`, which means 5% of `maxmemory` is reserved. To adjust the reserved percentage in all participating clusters, use an [update Active-Active database configuration](/content/operate/rs/references/rest-api/requests/crdbs/_index.md#patch-crdbs) REST API request: ```sh PATCH https://:/v1/crdbs/ @@ -91,14 +90,14 @@ Networking between the clusters must be configured before creating an Active-Act ### Network ports -Every node must have access to the REST API ports of every other node as well as other ports for proxies, VPNs, and the Cluster Manager UI. See [Network port configurations]({{< relref "/operate/rs/networking/port-configurations.md" >}}) for more details. These ports should be allowed through firewalls that may be positioned between the clusters. +Every node must have access to the REST API ports of every other node as well as other ports for proxies, VPNs, and the Cluster Manager UI. See [Network port configurations](/content/operate/rs/networking/port-configurations.md) for more details. These ports should be allowed through firewalls that may be positioned between the clusters. ### Network Time Service {#network-time-service} Active-Active databases require a time service like NTP or Chrony to make sure the clocks on all cluster nodes are synchronized. This is critical to avoid problems with internal cluster communications that can impact your data integrity. -See [Synchronizing cluster node clocks]({{< relref "/operate/rs/clusters/configure/sync-clocks.md" >}}) for more information. +See [Synchronizing cluster node clocks](/content/operate/rs/clusters/configure/sync-clocks.md) for more information. ## Data compression @@ -118,21 +117,21 @@ The compression level is an integer between 0 and 6 where: - The default compression level is `3`. -To change the compression level, use the `--compression` option when you [create]({{< relref "/operate/rs/references/cli-utilities/crdb-cli/crdb/create" >}}) or [update]({{< relref "/operate/rs/references/cli-utilities/crdb-cli/crdb/update" >}}) an Active-Active database with [`crdb-cli`]({{< relref "/operate/rs/references/cli-utilities/crdb-cli" >}}). +To change the compression level, use the `--compression` option when you [create](/content/operate/rs/references/cli-utilities/crdb-cli/crdb/create.md) or [update](/content/operate/rs/references/cli-utilities/crdb-cli/crdb/update.md) an Active-Active database with [`crdb-cli`](/content/operate/rs/references/cli-utilities/crdb-cli/_index.md). ## Redis modules {#redis-modules} -Several Redis modules are compatible with Active-Active databases. Find the list of [compatible Redis modules]({{< relref "/operate/oss_and_stack/stack-with-enterprise/enterprise-capabilities" >}}). +Several Redis modules are compatible with Active-Active databases. Find the list of [compatible Redis modules](/content/operate/oss_and_stack/stack-with-enterprise/enterprise-capabilities.md). -Active-Active databases created with or upgraded to Redis version 8 or later automatically enable [Redis Search]({{}}) and [JSON]({{}}), which allows you to index, query, and perform full-text searches of nested JSON documents. +Active-Active databases created with or upgraded to Redis version 8 or later automatically enable [Redis Search](/content/operate/oss_and_stack/stack-with-enterprise/search/search-active-active.md) and [JSON](/content/operate/oss_and_stack/stack-with-enterprise/json/_index.md), which allows you to index, query, and perform full-text searches of nested JSON documents. ## Limitations Active-Active databases have the following limitations: -- An existing database can't be changed into an Active-Active database. To move data from an existing database to an Active-Active database, you must [create a new Active-Active database]({{< relref "/operate/rs/databases/active-active/create.md" >}}) and [migrate the data]({{< relref "/operate/rs/databases/import-export/migrate-to-active-active.md" >}}). -- [Discovery service]({{< relref "/operate/rs/databases/durability-ha/discovery-service.md" >}}) is not supported with Active-Active databases. Active-Active databases require FQDNs or [mDNS]({{< relref "/operate/rs/networking/mdns.md" >}}). +- An existing database can't be changed into an Active-Active database. To move data from an existing database to an Active-Active database, you must [create a new Active-Active database](/content/operate/rs/databases/active-active/create.md) and [migrate the data](/content/operate/rs/databases/import-export/migrate-to-active-active.md). +- [Discovery service](/content/operate/rs/databases/durability-ha/discovery-service.md) is not supported with Active-Active databases. Active-Active databases require FQDNs or [mDNS](/content/operate/rs/networking/mdns.md). - The `FLUSH` command is not supported from the CLI. To flush your database, use the API or Cluster Manager UI. - The `UNLINK` command is a blocking command for all types of keys. - Cross slot multi commands (such as `MSET`) are not supported with Active-Active databases. diff --git a/content/operate/rs/databases/active-active/syncer.md b/content/operate/rs/databases/active-active/syncer.md index 9b0ef68d6d..c12cf731cb 100644 --- a/content/operate/rs/databases/active-active/syncer.md +++ b/content/operate/rs/databases/active-active/syncer.md @@ -20,7 +20,7 @@ The syncer process: 1. Reads data from that database instance 1. Writes the data to the local cluster's primary(master) shard -Some replication capabilities are also included in [Redis Open Source]({{< relref "/operate/oss_and_stack/management/replication" >}}). +Some replication capabilities are also included in [Redis Open Source](/content/operate/oss_and_stack/management/replication.md). The primary (also known as master) shard at the top of the primary-replica tree creates a replication ID. This replication ID is identical for all replicas in that tree. @@ -30,18 +30,17 @@ When a new primary is appointed, the replication ID changes, but a partial sync In a partial sync, the backlog of operations since the offset are transferred as raw operations. In a full sync, the data from the primary is transferred to the replica as an RDB file which is followed by a partial sync. -Partial synchronization requires a backlog large enough to store the data operations until connection is restored. See [replication backlog]({{< relref "/operate/rs/databases/active-active/manage#replication-backlog" >}}) for more info on changing the replication backlog size. +Partial synchronization requires a backlog large enough to store the data operations until connection is restored. See [replication backlog](/content/operate/rs/databases/active-active/manage.md#replication-backlog) for more info on changing the replication backlog size. ### Syncer in Active-Active replication In the case of an Active-Active database: - Multiple past replication IDs and offsets are stored to allow for multiple syncs -- The [Active-Active replication backlog]({{< relref "/operate/rs/databases/active-active/manage#replication-backlog" >}}) is also sent to the replica during a full sync. +- The [Active-Active replication backlog](/content/operate/rs/databases/active-active/manage.md#replication-backlog) is also sent to the replica during a full sync. -{{< warning >}} -Full sync triggers heavy data transfers between geo-replicated instances of an Active-Active database. -{{< /warning >}} +> [!WARNING] +> Full sync triggers heavy data transfers between geo-replicated instances of an Active-Active database. An Active-Active database uses partial synchronization in the following situations: @@ -51,9 +50,8 @@ An Active-Active database uses partial synchronization in the following situatio - Migrate primary shard to another node as a replica using failover and replica migration - Migrate primary shard and preserve roles using failover, replica migration, and second failover to return shard to primary -{{< note >}} -Synchronization of data from the primary shard to the replica shard is always a full synchronization. -{{< /note >}} +> [!NOTE] +> Synchronization of data from the primary shard to the replica shard is always a full synchronization. ## Troubleshooting syncer errors @@ -63,7 +61,7 @@ Some syncer errors are unrecoverable and cause the syncer to exit with exit code #### Restart syncer for regular databases -To restart a regular database's syncer after an unrecoverable error, [update the database configuration]({{}}) with the REST API to enable `sync`: +To restart a regular database's syncer after an unrecoverable error, [update the database configuration](/content/operate/rs/references/rest-api/requests/bdbs/_index.md#put-bdbs) with the REST API to enable `sync`: ```sh @@ -77,7 +75,7 @@ curl -v -k -u : -X PUT \ To restart an Active-Active database's syncer after an unrecoverable error, use one of the following methods. -- For each participating cluster, [update the database configuration]({{}}) with the REST API to enable `sync`: +- For each participating cluster, [update the database configuration](/content/operate/rs/references/rest-api/requests/bdbs/_index.md#put-bdbs) with the REST API to enable `sync`: ```sh curl -v -k -u : -X PUT \ @@ -86,12 +84,11 @@ To restart an Active-Active database's syncer after an unrecoverable error, use https://:/v1/bdbs/ ``` -- Run [`crdb-cli crdb update`]({{}}): +- Run [`crdb-cli crdb update`](/content/operate/rs/references/cli-utilities/crdb-cli/crdb/update.md): ```sh crdb-cli crdb update --crdb-guid --force ``` -{{< note >}} -Replace ``, ``, ``, ``, ``, and `` with your actual values. -{{< /note >}} \ No newline at end of file +> [!NOTE] +> Replace ``, ``, ``, ``, ``, and `` with your actual values. \ No newline at end of file diff --git a/content/operate/rs/databases/active-active/synchronization-mode.md b/content/operate/rs/databases/active-active/synchronization-mode.md index 42f6db71a2..c4d8c6e581 100644 --- a/content/operate/rs/databases/active-active/synchronization-mode.md +++ b/content/operate/rs/databases/active-active/synchronization-mode.md @@ -10,7 +10,7 @@ description: How to configure distributed synchronization so that any available linktitle: Distributed synchronization weight: 80 --- -Replicated databases, such as [Replica Of]({{< relref "/operate/rs/databases/import-export/replica-of/" >}}) and [Active-Active]({{< relref "/operate/rs/databases/active-active" >}}) databases, +Replicated databases, such as [Replica Of](/content/operate/rs/databases/import-export/replica-of/_index.md) and [Active-Active](/content/operate/rs/databases/active-active/_index.md) databases, use proxy endpoints to synchronize database changes with the databases on other participating clusters. To improve the throughput and lower the latency for synchronization traffic, @@ -20,16 +20,15 @@ Every database by default has one proxy endpoint that manages client and synchro and that proxy endpoint is used for database synchronization. This is called centralized synchronization. -To prepare a database to use distributed synchronization you must first make sure that the database [proxy policy]({{< relref "/operate/rs/databases/configure/proxy-policy.md" >}}) +To prepare a database to use distributed synchronization you must first make sure that the database [proxy policy](/content/operate/rs/databases/configure/proxy-policy.md) is defined so that either each node has a proxy endpoint or each primary (master) shard has a proxy endpoint. After you have multiple proxies for the database, you can configure the database synchronization to use distributed synchronization. ## Configure distributed synchronization -{{< note >}} -You may use the database name in place of `db:` in the following `rladmin` commands. -{{< /note >}} +> [!NOTE] +> You may use the database name in place of `db:` in the following `rladmin` commands. To configure distributed synchronization: diff --git a/content/operate/rs/databases/configure/_index.md b/content/operate/rs/databases/configure/_index.md index a400b5df65..182cf3eecf 100644 --- a/content/operate/rs/databases/configure/_index.md +++ b/content/operate/rs/databases/configure/_index.md @@ -18,13 +18,13 @@ You can manage your Redis Software databases with several tools: - Command-line tools: - - [`rladmin`]({{< relref "/operate/rs/references/cli-utilities/rladmin" >}}) for standalone database configuration + - [`rladmin`](/content/operate/rs/references/cli-utilities/rladmin/_index.md) for standalone database configuration - - [`crdb-cli`]({{< relref "/operate/rs/references/cli-utilities/crdb-cli" >}}) for Active-Active database configuration + - [`crdb-cli`](/content/operate/rs/references/cli-utilities/crdb-cli/_index.md) for Active-Active database configuration - - [`redis-cli`]({{< relref "/develop/tools/cli" >}}) for Redis Open Source configuration + - [`redis-cli`](/content/develop/tools/cli.md) for Redis Open Source configuration -- [REST API]({{< relref "/operate/rs/references/rest-api/_index.md" >}}) +- [REST API](/content/operate/rs/references/rest-api/_index.md) ## Edit database settings @@ -38,9 +38,9 @@ To edit the configuration of a database using the Cluster Manager UI: 1. Change any [configurable database settings](#config-settings). - {{< note >}} -For [Active-Active database instances]({{< relref "/operate/rs/databases/active-active" >}}), most database settings only apply to the instance that you are editing. - {{< /note >}} + > [!NOTE] + > For [Active-Active database instances](/content/operate/rs/databases/active-active/_index.md), most database settings only apply to the instance that you are editing. + > 1. Select **Save**. @@ -48,7 +48,7 @@ For [Active-Active database instances]({{< relref "/operate/rs/databases/active- ### General -- [**Tags**]({{}}) - Add custom tags to categorize the database. +- [**Tags**](/content/operate/rs/databases/configure/db-tags.md) - Add custom tags to categorize the database. - **Database version** - Select the Redis version when you create a database. @@ -64,36 +64,35 @@ For [Active-Active database instances]({{< relref "/operate/rs/databases/active- - **Endpoint port number** - You can define the port number that clients use to connect to the database. Otherwise, a port is randomly selected. - {{< note >}} -You cannot change the [port number]({{< relref "/operate/rs/networking/port-configurations.md" >}}) -after the database is created. - {{< /note >}} + > [!NOTE] + > You cannot change the [port number](/content/operate/rs/networking/port-configurations.md) + > after the database is created. + > ### Capacity -- **Memory limit** - [Database memory limits]({{< relref "/operate/rs/databases/memory-performance/memory-limit.md" >}}) include all database replicas and shards, including replica shards in database replication and database shards in database clustering. +- **Memory limit** - [Database memory limits](/content/operate/rs/databases/memory-performance/memory-limit.md) include all database replicas and shards, including replica shards in database replication and database shards in database clustering. If the total size of the database in the cluster reaches the memory limit, the memory eviction policy for the database is enforced. - **RAM limit** - If you create a database with Auto Tiering enabled, you also need to set the RAM-to-Flash ratio. Minimum RAM is 10%. Maximum RAM is 50%. -- [**Memory eviction**]({{}}) - By default, when the total size of the database reaches its memory limit, the database evicts keys according to the least recently used keys out of all keys with an "expire" field set to make room for new keys. You can select a different eviction policy. +- [**Memory eviction**](/content/operate/rs/databases/memory-performance/eviction-policy.md) - By default, when the total size of the database reaches its memory limit, the database evicts keys according to the least recently used keys out of all keys with an "expire" field set to make room for new keys. You can select a different eviction policy. ### Capabilities -When you create a new in-memory database, you can enable multiple Redis Stack [**Capabilities**]({{}}). +When you create a new in-memory database, you can enable multiple Redis Stack [**Capabilities**](/content/operate/oss_and_stack/stack-with-enterprise/_index.md). Databases created with or upgraded to Redis version 8 or later automatically enable the capabilities (modules) bundled with Redis Software as follows: {{}} For Auto Tiering databases, you can enable capabilities that support Auto Tiering. See [Redis Software and Redis Stack feature compatibility -]({{< relref "/operate/oss_and_stack/stack-with-enterprise/enterprise-capabilities" >}}) for compatibility details. +](/content/operate/oss_and_stack/stack-with-enterprise/enterprise-capabilities.md) for compatibility details. -{{}} -To use Redis Stack capabilities, enable them when you create a new database. -You cannot enable them after database creation. -{{}} +> [!NOTE] +> To use Redis Stack capabilities, enable them when you create a new database. +> You cannot enable them after database creation. To add capabilities to the database: @@ -111,93 +110,93 @@ To change capabilities' parameters for an existing database using the Cluster Ma ### High Availability -- [**Replication**]({{< relref "/operate/rs/databases/durability-ha/replication.md" >}}) - We recommend you use intra-cluster replication to create replica shards for each database for high availability. +- [**Replication**](/content/operate/rs/databases/durability-ha/replication.md) - We recommend you use intra-cluster replication to create replica shards for each database for high availability. - If the cluster is configured to support [rack-zone awareness]({{< relref "/operate/rs/clusters/configure/rack-zone-awareness.md" >}}), you can also enable rack-zone awareness for the database. + If the cluster is configured to support [rack-zone awareness](/content/operate/rs/clusters/configure/rack-zone-awareness.md), you can also enable rack-zone awareness for the database. -- [**Replica high availability**]({{< relref "/operate/rs/databases/configure/replica-ha" >}}) - Automatically migrates replica shards to an available node if a replica node fails or is promoted to primary. +- [**Replica high availability**](/content/operate/rs/databases/configure/replica-ha.md) - Automatically migrates replica shards to an available node if a replica node fails or is promoted to primary. ### Clustering - **Enable sharding** - You can either: - - Turn on sharding to enable [database clustering]({{< relref "/operate/rs/databases/durability-ha/clustering.md" >}}) and select the number of database shards. + - Turn on sharding to enable [database clustering](/content/operate/rs/databases/durability-ha/clustering.md) and select the number of database shards. - When database clustering is enabled, databases are subject to limitations on [Multi-key commands]({{< relref "/operate/rs/databases/durability-ha/clustering.md" >}}). + When database clustering is enabled, databases are subject to limitations on [Multi-key commands](/content/operate/rs/databases/durability-ha/clustering.md). You can increase the number of shards in the database at any time. - - Turn off sharding to use only one shard so that you can use [Multi-key commands]({{< relref "/operate/rs/databases/durability-ha/clustering.md" >}}) without the limitations. + - Turn off sharding to use only one shard so that you can use [Multi-key commands](/content/operate/rs/databases/durability-ha/clustering.md) without the limitations. -- [**Shards placement**]({{< relref "/operate/rs/databases/memory-performance/shard-placement-policy" >}}) - Determines how to distribute database shards across nodes in the cluster. +- [**Shards placement**](/content/operate/rs/databases/memory-performance/shard-placement-policy.md) - Determines how to distribute database shards across nodes in the cluster. - _Dense_ places shards on the smallest number of nodes. - _Sparse_ spreads shards across many nodes. -- [**OSS Cluster API**]({{< relref "/operate/rs/databases/configure/oss-cluster-api.md" >}}) - The OSS Cluster API configuration allows access to multiple endpoints for increased throughput. +- [**OSS Cluster API**](/content/operate/rs/databases/configure/oss-cluster-api.md) - The OSS Cluster API configuration allows access to multiple endpoints for increased throughput. This configuration requires clients to connect to the primary node to retrieve the cluster topology before they can connect directly to proxies on each node. When you enable the OSS Cluster API, shard placement changes to _Sparse_, and the database proxy policy changes to _All primary shards_ automatically. - {{}} -You must use a client that supports the cluster API to connect to a database that has the cluster API enabled. - {{}} + > [!NOTE] + > You must use a client that supports the cluster API to connect to a database that has the cluster API enabled. + > -- **Hashing policy** - You can accept the [standard hashing policy]({{}}), which is compatible with Redis Open Source, or define a [custom hashing policy]({{}}) to define where keys are located in the clustered database. +- **Hashing policy** - You can accept the [standard hashing policy](/content/operate/rs/databases/durability-ha/clustering.md#standard-hashing-policy), which is compatible with Redis Open Source, or define a [custom hashing policy](/content/operate/rs/databases/durability-ha/clustering.md#custom-hashing-policy) to define where keys are located in the clustered database. -- [**Database proxy**]({{< relref "/operate/rs/databases/configure/proxy-policy" >}}) - Determines the number and location of active proxies, which manage incoming database operation requests. +- [**Database proxy**](/content/operate/rs/databases/configure/proxy-policy.md) - Determines the number and location of active proxies, which manage incoming database operation requests. ### Durability -- [**Persistence**]({{}}) - To protect against loss of data stored in RAM, you can enable data persistence and store a copy of the data on disk with snapshots or an append-only file. +- [**Persistence**](/content/operate/rs/databases/configure/database-persistence.md) - To protect against loss of data stored in RAM, you can enable data persistence and store a copy of the data on disk with snapshots or an append-only file. -- **Scheduled backup** - You can configure [periodic backups]({{}}) of the database, including the interval and backup location parameters. +- **Scheduled backup** - You can configure [periodic backups](/content/operate/rs/databases/import-export/schedule-backups.md) of the database, including the interval and backup location parameters. ### TLS -You can require [**TLS**]({{< relref "/operate/rs/security/encryption/tls/" >}}) encryption and authentication for all communications, TLS encryption and authentication for Replica Of communication only, and TLS authentication for clients. +You can require [**TLS**](/content/operate/rs/security/encryption/tls/_index.md) encryption and authentication for all communications, TLS encryption and authentication for Replica Of communication only, and TLS authentication for clients. ### Access control - **Unauthenticated access** - You can access the database as the default user without providing credentials. -- **Password-only authentication** - When you configure a password for your database's default user, all connections to the database must authenticate with the [AUTH command]({{< relref "/commands/auth" >}}). +- **Password-only authentication** - When you configure a password for your database's default user, all connections to the database must authenticate with the [AUTH command](/content/commands/auth.md). If you also configure an access control list, connections can specify other users for authentication, and requests are allowed according to the Redis ACLs specified for that user. Creating a database without ACLs enables a *default* user with full access to the database. You can secure default user access by requiring a password. -- **Access Control List** - You can specify the [user roles]({{< relref "/operate/rs/security/access-control/create-db-roles" >}}) that have access to the database and the [Redis ACLs]({{< relref "/operate/rs/security/access-control/redis-acl-overview" >}}) that apply to those connections. +- **Access Control List** - You can specify the [user roles](/content/operate/rs/security/access-control/create-db-roles.md) that have access to the database and the [Redis ACLs](/content/operate/rs/security/access-control/redis-acl-overview.md) that apply to those connections. To define an access control list for a database: 1. In **Security > Access Control > Access Control List**, select **+ Add ACL**. - 1. Select a [role]({{< relref "/operate/rs/security/access-control/create-db-roles" >}}) to grant database access. + 1. Select a [role](/content/operate/rs/security/access-control/create-db-roles.md) to grant database access. - 1. Associate a [Redis ACL]({{< relref "/operate/rs/security/access-control/create-db-roles" >}}) with the role and database. + 1. Associate a [Redis ACL](/content/operate/rs/security/access-control/create-db-roles.md) with the role and database. 1. Select the check mark to add the ACL. ### Alerts -Select [alerts]({{}}) to show in the database status and configure their thresholds. +Select [alerts](/content/operate/rs/monitoring/v1_monitoring.md#database-alerts) to show in the database status and configure their thresholds. -You can also choose to [send alerts by email]({{}}) to relevant users. +You can also choose to [send alerts by email](/content/operate/rs/monitoring/v1_monitoring.md#send-alerts-by-email) to relevant users. ### Replica Of -With [**Replica Of**]({{}}), you can make the database a repository for keys from other databases. +With [**Replica Of**](/content/operate/rs/databases/import-export/replica-of/create.md), you can make the database a repository for keys from other databases. ### RESP3 support -[RESP]({{}}) (Redis Serialization Protocol) is the protocol clients use to communicate with Redis databases. If you enable RESP3 support, the database will support the RESP3 protocol in addition to RESP2. +[RESP](/content/develop/reference/protocol-spec.md) (Redis Serialization Protocol) is the protocol clients use to communicate with Redis databases. If you enable RESP3 support, the database will support the RESP3 protocol in addition to RESP2. -For more information about Redis Software's compatibility with RESP3, see [RESP compatibility with Redis Software]({{}}). +For more information about Redis Software's compatibility with RESP3, see [RESP compatibility with Redis Software](/content/operate/rs/references/compatibility/resp.md). ### Internode encryption -Enable **Internode encryption** to encrypt data in transit between nodes for this database. See [Internode encryption]({{< relref "/operate/rs/security/encryption/internode-encryption" >}}) for more information. +Enable **Internode encryption** to encrypt data in transit between nodes for this database. See [Internode encryption](/content/operate/rs/security/encryption/internode-encryption.md) for more information. diff --git a/content/operate/rs/databases/configure/database-persistence.md b/content/operate/rs/databases/configure/database-persistence.md index 443d50cc41..ae014b6c2e 100644 --- a/content/operate/rs/databases/configure/database-persistence.md +++ b/content/operate/rs/databases/configure/database-persistence.md @@ -11,13 +11,13 @@ linktitle: Persistence weight: 30 --- -Data is stored in RAM or a combination of RAM and flash memory ([Redis Flex and Auto Tiering]({{< relref "/operate/rs/databases/flash/" >}})), which risks data loss during process or server failures. Redis Software supports multiple methods to persist data to disk on a per-database basis to ensure data durability. +Data is stored in RAM or a combination of RAM and flash memory ([Redis Flex and Auto Tiering](/content/operate/rs/databases/flash/_index.md)), which risks data loss during process or server failures. Redis Software supports multiple methods to persist data to disk on a per-database basis to ensure data durability. You can configure [persistence](https://redis.com/redis-enterprise/technology/durable-redis/) during database creation or by editing an existing database. Although the persistence model can be changed dynamically, the switch can take time depending on the database size and the models being switched. ## Configure database persistence -You can configure persistence when you [create a database]({{< relref "/operate/rs/databases/create" >}}), or you can edit an existing database's configuration: +You can configure persistence when you [create a database](/content/operate/rs/databases/create.md), or you can edit an existing database's configuration: 1. From the **Databases** list, select the database, then select **Configuration**. @@ -60,9 +60,8 @@ Append-only file (AOF) - fsync every write - Redis Software sets the Redis direc Append-only file (AOF) - fsync every 1 sec - Redis will fsync any newly written data every second. This policy balances performance and durability and should be used when minimal data loss is acceptable in the event of a failure. This is the default Redis policy. This policy could result in between 1 and 2 seconds worth of data loss but on average this will be closer to one second. -{{< note >}} -If you use AOF for persistence, enable replication to improve performance. When both features are enabled for a database, the replica handles persistence, which prevents any performance impact on the master. -{{< /note >}} +> [!NOTE] +> If you use AOF for persistence, enable replication to improve performance. When both features are enabled for a database, the replica handles persistence, which prevents any performance impact on the master. **For use cases where data loss is tolerable or recoverable for extended periods of time:** diff --git a/content/operate/rs/databases/configure/db-defaults.md b/content/operate/rs/databases/configure/db-defaults.md index f458bcc439..3f4973738e 100644 --- a/content/operate/rs/databases/configure/db-defaults.md +++ b/content/operate/rs/databases/configure/db-defaults.md @@ -43,9 +43,9 @@ You can choose a predefined endpoint configuration to use the recommended databa ### Database proxy -Redis Software uses [proxies]({{< relref "/operate/rs/references/terminology#proxy" >}}) to manage and optimize access to database shards. Each node in the cluster runs a single proxy process, which can be active (receives incoming traffic) or passive (waits for failovers). +Redis Software uses [proxies](/content/operate/rs/references/terminology.md#proxy) to manage and optimize access to database shards. Each node in the cluster runs a single proxy process, which can be active (receives incoming traffic) or passive (waits for failovers). -You can configure default [proxy policies]({{< relref "/operate/rs/databases/configure/proxy-policy" >}}) to determine which nodes' proxies are active and bound to new databases by default. +You can configure default [proxy policies](/content/operate/rs/databases/configure/proxy-policy.md) to determine which nodes' proxies are active and bound to new databases by default. To configure the default database proxy policy using the Cluster Manager UI: @@ -59,13 +59,13 @@ To configure the default database proxy policy using the Cluster Manager UI: To configure the default proxy policy for non-sharded databases, use one of the following methods: -- [rladmin tune cluster]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-cluster" >}}): +- [rladmin tune cluster](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster): ```sh rladmin tune cluster default_non_sharded_proxy_policy { single | all-master-shards | all-nodes } ``` -- [Update cluster policy]({{< relref "/operate/rs/references/rest-api/requests/cluster/policy#put-cluster-policy" >}}) REST API request: +- [Update cluster policy](/content/operate/rs/references/rest-api/requests/cluster/policy.md#put-cluster-policy) REST API request: ```sh PUT /v1/cluster/policy @@ -76,13 +76,13 @@ To configure the default proxy policy for non-sharded databases, use one of the To configure the default proxy policy for sharded databases, use one of the following methods: -- [rladmin tune cluster]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-cluster" >}}): +- [rladmin tune cluster](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster): ```sh rladmin tune cluster default_sharded_proxy_policy { single | all-master-shards | all-nodes } ``` -- [Update cluster policy]({{< relref "/operate/rs/references/rest-api/requests/cluster/policy#put-cluster-policy" >}}) REST API request: +- [Update cluster policy](/content/operate/rs/references/rest-api/requests/cluster/policy.md#put-cluster-policy) REST API request: ```sh PUT /v1/cluster/policy @@ -91,7 +91,7 @@ To configure the default proxy policy for sharded databases, use one of the foll ### Shards placement -The default [shard placement policy]({{< relref "/operate/rs/databases/memory-performance/shard-placement-policy" >}}) determines the distribution of database shards across nodes in the cluster. +The default [shard placement policy](/content/operate/rs/databases/memory-performance/shard-placement-policy.md) determines the distribution of database shards across nodes in the cluster. Shard placement policies include: @@ -109,13 +109,13 @@ To configure default shard placement, use one of the following methods: {{The Database defaults panel lets you select Database proxy and Shards placement if Endpoint Configuration is set to Custom.}} -- [rladmin tune cluster]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-cluster" >}}): +- [rladmin tune cluster](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster): ```sh rladmin tune cluster default_shards_placement { dense | sparse } ``` -- [Update cluster policy]({{< relref "/operate/rs/references/rest-api/requests/cluster/policy#put-cluster-policy" >}}) REST API request: +- [Update cluster policy](/content/operate/rs/references/rest-api/requests/cluster/policy.md#put-cluster-policy) REST API request: ```sh PUT /v1/cluster/policy @@ -124,20 +124,20 @@ To configure default shard placement, use one of the following methods: ### Database version -New databases use the default Redis database version unless you select a different **Database version** when you [create a database]({{}}) in the Cluster Manager UI or specify the `redis_version` in a [create database REST API request]({{< relref "/operate/rs/references/rest-api/requests/bdbs" >}}). +New databases use the default Redis database version unless you select a different **Database version** when you [create a database](/content/operate/rs/databases/create.md) in the Cluster Manager UI or specify the `redis_version` in a [create database REST API request](/content/operate/rs/references/rest-api/requests/bdbs/_index.md). To configure the Redis database version, use one of the following methods: - Cluster Manager UI: Edit **Database version** in [**Database defaults**](#edit-database-defaults) -- [rladmin tune cluster]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-cluster" >}}): +- [rladmin tune cluster](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster): ```sh rladmin tune cluster default_redis_version ``` -- [Update cluster policy]({{< relref "/operate/rs/references/rest-api/requests/cluster/policy#put-cluster-policy" >}}) REST API request: +- [Update cluster policy](/content/operate/rs/references/rest-api/requests/cluster/policy.md#put-cluster-policy) REST API request: ```sh PUT /v1/cluster/policy @@ -146,19 +146,19 @@ To configure the Redis database version, use one of the following methods: ### Internode encryption -Enable [internode encryption]({{< relref "/operate/rs/security/encryption/internode-encryption" >}}) to encrypt data in transit between nodes for new databases by default. +Enable [internode encryption](/content/operate/rs/security/encryption/internode-encryption.md) to encrypt data in transit between nodes for new databases by default. To enable or turn off internode encryption by default, use one of the following methods: - Cluster Manager UI: Edit **Internode Encryption** in [**Database defaults**](#edit-database-defaults) -- [rladmin tune cluster]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-cluster" >}}): +- [rladmin tune cluster](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster): ```sh rladmin tune cluster data_internode_encryption { enabled | disabled } ``` -- [Update cluster policy]({{< relref "/operate/rs/references/rest-api/requests/cluster/policy#put-cluster-policy" >}}) REST API request: +- [Update cluster policy](/content/operate/rs/references/rest-api/requests/cluster/policy.md#put-cluster-policy) REST API request: ```sh PUT /v1/cluster/policy diff --git a/content/operate/rs/databases/configure/db-tags.md b/content/operate/rs/databases/configure/db-tags.md index 270e216dcf..67bc4489bb 100644 --- a/content/operate/rs/databases/configure/db-tags.md +++ b/content/operate/rs/databases/configure/db-tags.md @@ -19,7 +19,7 @@ The **Databases** screen shows tags for each database in the list. ## Add database tags -You can add tags when you [create a database]({{}}) or [edit an existing database's configuration]({{}}). +You can add tags when you [create a database](/content/operate/rs/databases/create.md) or [edit an existing database's configuration](/content/operate/rs/databases/configure/_index.md#edit-database-settings). To add tags to a database using the Cluster Manager UI: @@ -85,7 +85,7 @@ Count limit: ### Backward compatibility for existing tags -The current validation rules were introduced in Redis Software version 8.2.0, when database tags became eligible to be exposed as labels in [v2 metrics]({{}}). In particular, tag keys must follow the [Prometheus label name rules](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels). Tags created before version 8.2.0 might not meet these rules. +The current validation rules were introduced in Redis Software version 8.2.0, when database tags became eligible to be exposed as labels in [v2 metrics](/content/operate/rs/monitoring/metrics_stream_engine/prometheus-metrics-v2.md). In particular, tag keys must follow the [Prometheus label name rules](https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels). Tags created before version 8.2.0 might not meet these rules. Existing tags that do not meet the current validation rules can remain on a database for backward compatibility, as long as they are unchanged. A tag is considered unchanged only when both its key and its value stay exactly the same. @@ -102,16 +102,16 @@ Some tag keys, such as `redis`, `cluster`, and `db`, are reserved for internal u ## Use database tags in metrics -You can expose selected database tags as labels in [v2 metrics]({{}}) through a dedicated `db_tags` metric. This lets you build dashboards, alerts, filters, and ownership views that are grouped by your tags, once the relevant tag keys are enabled in the cluster's metrics configuration. +You can expose selected database tags as labels in [v2 metrics](/content/operate/rs/monitoring/metrics_stream_engine/prometheus-metrics-v2.md) through a dedicated `db_tags` metric. This lets you build dashboards, alerts, filters, and ownership views that are grouped by your tags, once the relevant tag keys are enabled in the cluster's metrics configuration. -For how to enable export, choose which tag keys are exposed, query metrics with `db_tags`, and use tags in observability platforms such as Prometheus, Grafana, Datadog, New Relic, and Dynatrace, see [Database tags in metrics]({{}}). +For how to enable export, choose which tag keys are exposed, query metrics with `db_tags`, and use tags in observability platforms such as Prometheus, Grafana, Datadog, New Relic, and Dynatrace, see [Database tags in metrics](/content/operate/rs/monitoring/metrics_stream_engine/db-tags-in-metrics.md). ## Troubleshooting database tags ### Why can't I add a tag? -Check if your tags adhere to the [validation rules]({{}}). +Check if your tags adhere to the [validation rules](/content/operate/rs/databases/configure/db-tags.md#tag-validation-rules). ### Why can't I update the value of some of the existing tags? -Those tags are likely [legacy tags]({{}}) that no longer meet the current validation rules. +Those tags are likely [legacy tags](/content/operate/rs/databases/configure/db-tags.md#backward-compatibility-for-existing-tags) that no longer meet the current validation rules. diff --git a/content/operate/rs/databases/configure/db-upgrade.md b/content/operate/rs/databases/configure/db-upgrade.md index e782becd47..e491130a67 100644 --- a/content/operate/rs/databases/configure/db-upgrade.md +++ b/content/operate/rs/databases/configure/db-upgrade.md @@ -33,13 +33,13 @@ To change the number of shards upgraded in parallel during database upgrades, us - Cluster Manager UI – Edit **Database shard parallel upgrade** in [**Upgrade configuration**](#edit-upgrade-configuration) -- [rladmin tune cluster]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-cluster" >}}): +- [rladmin tune cluster](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster): ```sh rladmin tune cluster parallel_shards_upgrade { all | } ``` -- [Update cluster policy]({{< relref "/operate/rs/references/rest-api/requests/cluster/policy#put-cluster-policy" >}}) REST API request: +- [Update cluster policy](/content/operate/rs/references/rest-api/requests/cluster/policy.md#put-cluster-policy) REST API request: ```sh PUT /v1/cluster/policy @@ -54,13 +54,13 @@ To change `resp3_default` to `disabled`, use one of the following methods: - Cluster Manager UI – Edit **RESP3 support** in [**Upgrade configuration**](#edit-upgrade-configuration) -- [rladmin tune cluster]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-cluster" >}}): +- [rladmin tune cluster](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster): ```sh rladmin tune cluster resp3_default { enabled | disabled } ``` -- [Update cluster policy]({{< relref "/operate/rs/references/rest-api/requests/cluster/policy#put-cluster-policy" >}}) REST API request: +- [Update cluster policy](/content/operate/rs/references/rest-api/requests/cluster/policy.md#put-cluster-policy) REST API request: ```sh PUT /v1/cluster/policy diff --git a/content/operate/rs/databases/configure/oss-cluster-api.md b/content/operate/rs/databases/configure/oss-cluster-api.md index 391dbba994..aec7e905ed 100644 --- a/content/operate/rs/databases/configure/oss-cluster-api.md +++ b/content/operate/rs/databases/configure/oss-cluster-api.md @@ -10,7 +10,7 @@ linkTitle: OSS Cluster API weight: 20 --- -Review [OSS Cluster API]({{< relref "/operate/rs/clusters/optimize/oss-cluster-api" >}}) to determine if you should enable this feature for your database. +Review [OSS Cluster API](/content/operate/rs/clusters/optimize/oss-cluster-api.md) to determine if you should enable this feature for your database. ## Prerequisites @@ -18,19 +18,18 @@ The OSS Cluster API is supported only when a database meets specific criteria. The database must: -- Use the standard [hashing policy]({{< relref "/operate/rs/databases/durability-ha/clustering#supported-hashing-policies" >}}). -- Have the [proxy policy]({{< relref "/operate/rs/databases/configure/proxy-policy" >}}) set to either _All primary shards_ or _All nodes_. +- Use the standard [hashing policy](/content/operate/rs/databases/durability-ha/clustering.md#supported-hashing-policies). +- Have the [proxy policy](/content/operate/rs/databases/configure/proxy-policy.md) set to either _All primary shards_ or _All nodes_. In addition, the database must _not_: - Use node `include` or `exclude` in the proxy policy. -- Use [RedisTimeSeries]({{< relref "/operate/oss_and_stack/stack-with-enterprise/timeseries" >}}) or [RedisGears]({{< relref "/operate/oss_and_stack/stack-with-enterprise/deprecated-features/gears-v1" >}}) modules. +- Use [RedisTimeSeries](/content/operate/oss_and_stack/stack-with-enterprise/timeseries/_index.md) or [RedisGears](/content/operate/oss_and_stack/stack-with-enterprise/deprecated-features/gears-v1/_index.md) modules. The OSS Cluster API setting applies to individual databases instead of the entire cluster. -{{< note >}} -For Kubernetes deployments, see [Enable cluster-aware clients (OSS Cluster API)]({{< relref "/operate/kubernetes/networking/cluster-aware-clients" >}}). -{{< /note >}} +> [!NOTE] +> For Kubernetes deployments, see [Enable cluster-aware clients (OSS Cluster API)](/content/operate/kubernetes/networking/cluster-aware-clients.md). ## Enable OSS Cluster API support @@ -43,7 +42,7 @@ tab1="Cluster Manager UI" tab2="rladmin" tab3="REST API" >}} -When you use the Cluster Manager UI to enable the OSS Cluster API, it automatically configures the [prerequisites]({{< relref "/operate/rs/databases/configure/oss-cluster-api#prerequisites" >}}). +When you use the Cluster Manager UI to enable the OSS Cluster API, it automatically configures the [prerequisites](/content/operate/rs/databases/configure/oss-cluster-api.md#prerequisites). To enable the OSS Cluster API for an existing database in the Cluster Manager UI: @@ -63,11 +62,11 @@ You can also use the Cluster Manager UI to enable the setting when creating a ne -tab-sep- -You can use the [`rladmin` utility]({{< relref "/operate/rs/references/cli-utilities/rladmin/" >}}) to enable the OSS Cluster API for Redis Software databases, including Replica Of databases. +You can use the [`rladmin` utility](/content/operate/rs/references/cli-utilities/rladmin/_index.md) to enable the OSS Cluster API for Redis Software databases, including Replica Of databases. For Active-Active (CRDB) databases, [use the crdb-cli utility](#active-active-databases). -Ensure the [prerequisites]({{< relref "/operate/rs/databases/configure/oss-cluster-api#prerequisites" >}}) have been configured. Then, enable the OSS Cluster API for a Redis database from the command line: +Ensure the [prerequisites](/content/operate/rs/databases/configure/oss-cluster-api.md#prerequisites) have been configured. Then, enable the OSS Cluster API for a Redis database from the command line: ```sh $ rladmin tune db oss_cluster enabled @@ -84,7 +83,7 @@ The OSS Cluster API setting applies to the specified database only; it does not -tab-sep- -You can enable the OSS Cluster API when you [create a database]({{}}) using the REST API: +You can enable the OSS Cluster API when you [create a database](/content/operate/rs/references/rest-api/requests/bdbs/_index.md#post-bdbs-v1) using the REST API: ```sh POST /v1/bdbs @@ -94,7 +93,7 @@ POST /v1/bdbs } ``` -To enable the OSS Cluster API for an existing database, you can use an [update database configuration]({{}}) REST API request: +To enable the OSS Cluster API for an existing database, you can use an [update database configuration](/content/operate/rs/references/rest-api/requests/bdbs/_index.md#put-bdbs) REST API request: ```sh PUT /v1/bdbs/ @@ -105,13 +104,13 @@ PUT /v1/bdbs/ ### Active-Active databases -The OSS Cluster API setting applies to all instances of the Active-Active database across participating clusters. To enable the OSS Cluster API for Active-Active databases, use the [Cluster Manager UI](#cluster-manager-ui) or the [`crdb-cli`]({{}}) utility. +The OSS Cluster API setting applies to all instances of the Active-Active database across participating clusters. To enable the OSS Cluster API for Active-Active databases, use the [Cluster Manager UI](#cluster-manager-ui) or the [`crdb-cli`](/content/operate/rs/references/cli-utilities/crdb-cli/_index.md) utility. {{< multitabs id="enable-oss-cluster-api-active-active" tab1="Cluster Manager UI" tab2="crdb-cli" >}} -When you use the Cluster Manager UI to enable the OSS Cluster API, it automatically configures the [prerequisites]({{< relref "/operate/rs/databases/configure/oss-cluster-api#prerequisites" >}}). +When you use the Cluster Manager UI to enable the OSS Cluster API, it automatically configures the [prerequisites](/content/operate/rs/databases/configure/oss-cluster-api.md#prerequisites). To enable the OSS Cluster API for an existing Active-Active database in the Cluster Manager UI: @@ -143,7 +142,7 @@ $ crdb-cli crdb create --name \ --instance fqdn=,username=,password= ``` -See the [`crdb-cli crdb create`]({{}}) reference for more options. +See the [`crdb-cli crdb create`](/content/operate/rs/references/cli-utilities/crdb-cli/crdb/create.md) reference for more options. To enable the OSS Cluster API for an existing Active-Active database with `crdb-cli`: @@ -166,9 +165,9 @@ To enable the OSS Cluster API for an existing Active-Active database with `crdb- ## Change preferred IP type -By default, using [`CLUSTER SLOTS`]({{}}) and [`CLUSTER SHARDS`]({{}}) in a Redis Software cluster exposes the internal IP addresses for databases with the OSS Cluster API enabled. +By default, using [`CLUSTER SLOTS`](/content/commands/cluster-slots.md) and [`CLUSTER SHARDS`](/content/commands/cluster-shards.md) in a Redis Software cluster exposes the internal IP addresses for databases with the OSS Cluster API enabled. -To use external IP addresses instead of internal IP addresses, run the following [`rladmin tune db`]({{}}) command for each affected database: +To use external IP addresses instead of internal IP addresses, run the following [`rladmin tune db`](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-db) command for each affected database: ```sh $ rladmin tune db db: oss_cluster_api_preferred_ip_type external @@ -217,6 +216,6 @@ When you turn off OSS Cluster API support for an existing database, the change a ## Multi-key command support When you enable the OSS Cluster API for a database, -[multi-key commands]({{< relref "/operate/rc/databases/configuration/clustering#multikey-operations" >}}) are only allowed when all keys are mapped to the same slot. +[multi-key commands](/content/operate/rc/databases/configuration/clustering.md#multikey-operations) are only allowed when all keys are mapped to the same slot. -To verify that your database meets this requirement, make sure that the `CLUSTER KEYSLOT` reply is the same for all keys affected by the multi-key command. To learn more, see [multi-key operations]({{< relref "/operate/rs/databases/durability-ha/clustering#multikey-operations" >}}). +To verify that your database meets this requirement, make sure that the `CLUSTER KEYSLOT` reply is the same for all keys affected by the multi-key command. To learn more, see [multi-key operations](/content/operate/rs/databases/durability-ha/clustering.md#multikey-operations). diff --git a/content/operate/rs/databases/configure/proxy-policy.md b/content/operate/rs/databases/configure/proxy-policy.md index 5bc4a4e1ac..4ba837cf2a 100644 --- a/content/operate/rs/databases/configure/proxy-policy.md +++ b/content/operate/rs/databases/configure/proxy-policy.md @@ -22,14 +22,14 @@ A database can have one of the following proxy policies: | Proxy policy | Description | Recommended use cases | Advantages | Disadvantages | |--------------|-------------|-----------------------|-----------|-----------------| | Single | Only a single proxy is bound to the database. This is the default database configuration. | Most use cases without high traffic or load | Lower resource usage, fewer application-to-cluster connections | Higher latency, more network hops | -| All primary shards | Multiple proxies are bound to the database, one on each node that hosts a database primary shard. | Most use cases that require multiple endpoints, such as when using the [OSS Cluster API]({{}}) | Lower latency, fewer network hops, higher throughput | Higher resource usage, more application-to-proxy connections | -| All nodes | Multiple proxies are bound to the database, one on each node in the cluster, regardless of whether or not there is a shard from this database on the node. | When using [load balancers]({{}}) for environments without DNS | Higher throughput | Highest resource usage | +| All primary shards | Multiple proxies are bound to the database, one on each node that hosts a database primary shard. | Most use cases that require multiple endpoints, such as when using the [OSS Cluster API](/content/operate/rs/clusters/optimize/oss-cluster-api.md) | Lower latency, fewer network hops, higher throughput | Higher resource usage, more application-to-proxy connections | +| All nodes | Multiple proxies are bound to the database, one on each node in the cluster, regardless of whether or not there is a shard from this database on the node. | When using [load balancers](/content/operate/rs/networking/cluster-lba-setup.md) for environments without DNS | Higher throughput | Highest resource usage | ## View proxy policy -You can use the Cluster Manager UI, [`rladmin`]({{}}), or the [REST API]({{}}) to view proxy configuration settings. +You can use the Cluster Manager UI, [`rladmin`](/content/operate/rs/references/cli-utilities/rladmin/_index.md), or the [REST API](/content/operate/rs/references/rest-api/_index.md) to view proxy configuration settings. -The [`rladmin info cluster`]({{}}) command returns the current proxy policy for sharded and non-sharded (single shard) databases. +The [`rladmin info cluster`](/content/operate/rs/references/cli-utilities/rladmin/info.md#info-cluster) command returns the current proxy policy for sharded and non-sharded (single shard) databases. ```sh $ rladmin info cluster @@ -44,13 +44,12 @@ cluster configuration: You can use the [Cluster Manager UI](#cluster-manager-ui-method), the [REST API](#rest-api-method), or [`rladmin`](#command-line-method) to configure a database's proxy policy. -{{}} -Any configuration update that unbinds existing proxies can disconnect existing client connections. -{{}} +> [!WARNING] +> Any configuration update that unbinds existing proxies can disconnect existing client connections. ### Cluster Manager UI method -You can change a database's proxy policy when you [create]({{}}) or [edit]({{}}) a database using the Cluster Manager UI: +You can change a database's proxy policy when you [create](/content/operate/rs/databases/create.md) or [edit](/content/operate/rs/databases/configure/_index.md#edit-database-settings) a database using the Cluster Manager UI: 1. While in edit mode on the database's configuration screen, expand the **Clustering** section. @@ -60,7 +59,7 @@ You can change a database's proxy policy when you [create]({{}}) using the REST API: +You can specify a proxy policy when you [create a database](/content/operate/rs/references/rest-api/requests/bdbs/_index.md#post-bdbs-v1) using the REST API: ```sh POST /v1/bdbs @@ -70,7 +69,7 @@ POST /v1/bdbs } ``` -To change the proxy policy of an existing database and endpoint, you can use an [update database configuration]({{}}) REST API request: +To change the proxy policy of an existing database and endpoint, you can use an [update database configuration](/content/operate/rs/references/rest-api/requests/bdbs/_index.md#put-bdbs) REST API request: ```sh PUT /v1/bdbs/ @@ -82,7 +81,7 @@ PUT /v1/bdbs/ ### Command-line method -You can configure a database's proxy policy using [`rladmin bind`]({{}}). +You can configure a database's proxy policy using [`rladmin bind`](/content/operate/rs/references/cli-utilities/rladmin/bind.md). The following example changes the bind policy for a database named "db1" with an endpoint ID "1:1" to "All primary shards" proxy policy: @@ -96,10 +95,9 @@ The next command performs the same task using the database ID instead of the nam rladmin bind db db:1 endpoint 1:1 policy all-master-shards ``` -{{< note >}} -You can find the endpoint ID for the endpoint argument by running `rladmin status`. Look for the endpoint ID information under -the `ENDPOINT` section of the output. -{{< /note >}} +> [!NOTE] +> You can find the endpoint ID for the endpoint argument by running `rladmin status`. Look for the endpoint ID information under +> the `ENDPOINT` section of the output. ### Reapply policies after topology changes @@ -141,8 +139,7 @@ operations, configuring multiple active proxies may cause additional latency in operations as the shards and proxies are spread across multiple nodes in the cluster. -{{< note >}} -When the network on a single active proxy becomes the bottleneck, consider enabling multiple NIC support in Redis Software. With nodes that have multiple physical NICs (Network Interface Cards), you can configure Redis Software to separate internal and external traffic onto independent physical NICs. For more details, refer to [Multi-IP & IPv6]({{< relref "/operate/rs/networking/multi-ip-ipv6.md" >}}). -{{< /note >}} +> [!NOTE] +> When the network on a single active proxy becomes the bottleneck, consider enabling multiple NIC support in Redis Software. With nodes that have multiple physical NICs (Network Interface Cards), you can configure Redis Software to separate internal and external traffic onto independent physical NICs. For more details, refer to [Multi-IP & IPv6](/content/operate/rs/networking/multi-ip-ipv6.md). Having multiple proxies for a database can improve Redis Software's ability for fast failover in case of proxy or node failure. With multiple proxies for a database, a client doesn't need to wait for the cluster to spin up another proxy and a DNS change in most cases. Instead, the client uses the next IP address in the list to connect to another proxy. diff --git a/content/operate/rs/databases/configure/replica-ha.md b/content/operate/rs/databases/configure/replica-ha.md index 50cec7231e..d5c9698710 100644 --- a/content/operate/rs/databases/configure/replica-ha.md +++ b/content/operate/rs/databases/configure/replica-ha.md @@ -11,7 +11,7 @@ linkTitle: Replica high availability weight: 50 --- -When you enable [database replication]({{< relref "/operate/rs/databases/durability-ha/replication.md" >}}), +When you enable [database replication](/content/operate/rs/databases/durability-ha/replication.md), Redis Software creates a replica of each primary shard. The replica shard will always be located on a different node than the primary shard to make your data highly available. If the primary shard fails or if the node hosting the primary shard fails, then the replica is promoted to primary. @@ -25,7 +25,7 @@ the former replica shard which has been promoted to primary and a new replica sh An available node: -1. Meets replica migration requirements, such as [rack-awareness]({{< relref "/operate/rs/clusters/configure/rack-zone-awareness.md" >}}). +1. Meets replica migration requirements, such as [rack-awareness](/content/operate/rs/clusters/configure/rack-zone-awareness.md). 1. Has enough available RAM to store the replica shard. 1. Does not also contain the primary shard. @@ -42,10 +42,9 @@ For example: 1. If replica HA is enabled, a new replica shard is created on an available node. 1. The data from the primary shard is replicated to the new replica shard. -{{< note >}} -- Replica HA follows all prerequisites of replica migration, such as [rack-awareness]({{< relref "/operate/rs/clusters/configure/rack-zone-awareness.md" >}}). -- Replica HA migrates as many shards as possible based on available DRAM in the target node. When no DRAM is available, replica HA stops migrating replica shards to that node. -{{< /note >}} +> [!NOTE] +> - Replica HA follows all prerequisites of replica migration, such as [rack-awareness](/content/operate/rs/clusters/configure/rack-zone-awareness.md). +> - Replica HA migrates as many shards as possible based on available DRAM in the target node. When no DRAM is available, replica HA stops migrating replica shards to that node. ## Configure high availability for replica shards @@ -64,21 +63,20 @@ To use replication without replication high availability, clear the **Replica hi You can also enable or turn off replica high availability for a database using `rladmin` or the REST API. -{{< note >}} -For Active-Active databases, replica HA is enabled for the database by default to make sure that replica shards are available for Active-Active replication. -{{< /note >}} +> [!NOTE] +> For Active-Active databases, replica HA is enabled for the database by default to make sure that replica shards are available for Active-Active replication. ### Configure cluster policy for replica HA To enable or turn off replica high availability by default for the entire cluster, use one of the following methods: -- [rladmin tune cluster]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-cluster" >}}): +- [rladmin tune cluster](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster): ```sh rladmin tune cluster slave_ha { enabled | disabled } ``` -- [Update cluster policy]({{< relref "/operate/rs/references/rest-api/requests/cluster/policy#put-cluster-policy" >}}) REST API request: +- [Update cluster policy](/content/operate/rs/references/rest-api/requests/cluster/policy.md#put-cluster-policy) REST API request: ```sh PUT /v1/cluster/policy @@ -108,9 +106,11 @@ rladmin info cluster By default, replica HA has a 10-minute grace period after node failure and before new replica shards are created. -{{}}The default grace period is 30 minutes for containerized applications using [Redis Enterprise Software for Kubernetes]({{< relref "/operate/kubernetes/" >}}).{{}} +> [!NOTE] +> The default grace period is 30 minutes for containerized applications using [Redis Enterprise Software for Kubernetes](/content/operate/kubernetes/_index.md). -{{}}For Kubernetes deployments, if ReplicaHA (previously SlaveHA) is enabled at the cluster level, you must also manually enable it at the database level for each RedisEnterpriseDatabase (REDB) using the UI or `rladmin`. Without manual database-level configuration, databases will show `slave_ha: disabled (database)` even when cluster-level ReplicaHA is enabled.{{}} +> [!NOTE] +> For Kubernetes deployments, if ReplicaHA (previously SlaveHA) is enabled at the cluster level, you must also manually enable it at the database level for each RedisEnterpriseDatabase (REDB) using the UI or `rladmin`. Without manual database-level configuration, databases will show `slave_ha: disabled (database)` even when cluster-level ReplicaHA is enabled. To configure this grace period from rladmin, run: @@ -148,7 +148,7 @@ database in the cluster until the cooldown period ends. The default is one hour. After a database is migrated with replica HA, it cannot go through another migration due to another node failure until the cooldown period for the database (`slave_ha_bdb_cooldown_period`) ends. The default is two hours. -To configure cooldown periods, use [`rladmin tune cluster`]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-cluster" >}}): +To configure cooldown periods, use [`rladmin tune cluster`](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster): - For the cluster: @@ -174,6 +174,6 @@ The following alerts are sent during replica HA activation: - If two nodes that host a primary shard and its corresponding replica shard go down at the same time, both shards will be lost and replica high availability will not be able to create a new replica shard for any primary shard still running. - {{< note >}} -This limitation applies only when cluster quorum is maintained after two nodes fail, such as clusters with at least five nodes. If two nodes fail simultaneously in a cluster with only three nodes, the entire cluster is lost and must be recovered. - {{< /note >}} + > [!NOTE] + > This limitation applies only when cluster quorum is maintained after two nodes fail, such as clusters with at least five nodes. If two nodes fail simultaneously in a cluster with only three nodes, the entire cluster is lost and must be recovered. + > diff --git a/content/operate/rs/databases/configure/shard-placement.md b/content/operate/rs/databases/configure/shard-placement.md index abd5fe6e9e..a1e07f92b9 100644 --- a/content/operate/rs/databases/configure/shard-placement.md +++ b/content/operate/rs/databases/configure/shard-placement.md @@ -11,7 +11,7 @@ weight: 60 --- In Redis Software, the location of master and replica shards on the cluster nodes can impact the database and node performance. Master shards and their corresponding replica shards are always placed on separate nodes for data resiliency. -The [shard placement policy]({{< relref "/operate/rs/databases/memory-performance/shard-placement-policy.md" >}}) helps to maintain optimal performance and resiliency. +The [shard placement policy](/content/operate/rs/databases/memory-performance/shard-placement-policy.md) helps to maintain optimal performance and resiliency. {{< embed-md "shard-placement-intro.md" >}} diff --git a/content/operate/rs/databases/connect/_index.md b/content/operate/rs/databases/connect/_index.md index de10ed8f2d..dc14727f57 100644 --- a/content/operate/rs/databases/connect/_index.md +++ b/content/operate/rs/databases/connect/_index.md @@ -11,27 +11,27 @@ linkTitle: Connect weight: 20 --- -After you [set up a cluster]({{< relref "/operate/rs/clusters/new-cluster-setup" >}}) and [create a Redis database]({{< relref "/operate/rs/databases/create" >}}), you can connect to your database. +After you [set up a cluster](/content/operate/rs/clusters/new-cluster-setup.md) and [create a Redis database](/content/operate/rs/databases/create.md), you can connect to your database. To connect to your database, you need the database endpoint, which includes the cluster name (FQDN) and the database port. To view and copy public and private endpoints for a database in the cluster, see the database’s **Configuration > General** section in the Cluster Manager UI. {{View public and private endpoints from the General section of the database's Configuration screen.}} -If you try to connect with the FQDN, and the database does not respond, try connecting with the IP address. If this succeeds, DNS is not properly configured. To set up DNS, see [Configure cluster DNS]({{< relref "/operate/rs/networking/cluster-dns" >}}). +If you try to connect with the FQDN, and the database does not respond, try connecting with the IP address. If this succeeds, DNS is not properly configured. To set up DNS, see [Configure cluster DNS](/content/operate/rs/networking/cluster-dns.md). -If you want to secure your connection, set up [TLS]({{< relref "/operate/rs/security/encryption/tls/" >}}). +If you want to secure your connection, set up [TLS](/content/operate/rs/security/encryption/tls/_index.md). ## Connect to a database Use one of the following connection methods to connect to your database: -- [`redis-cli`]({{< relref "/operate/rs/references/cli-utilities/redis-cli/" >}}) utility +- [`redis-cli`](/content/operate/rs/references/cli-utilities/redis-cli/_index.md) utility - [Redis Insight](https://redis.com/redis-enterprise/redis-insight/) -- [Redis client]({{< relref "/develop/clients" >}}) for your preferred programming language +- [Redis client](/content/develop/clients/_index.md) for your preferred programming language -For examples, see [Test client connection]({{< relref "/operate/rs/databases/connect/test-client-connectivity" >}}). +For examples, see [Test client connection](/content/operate/rs/databases/connect/test-client-connectivity.md). ## Continue learning with Redis University diff --git a/content/operate/rs/databases/connect/supported-clients-browsers.md b/content/operate/rs/databases/connect/supported-clients-browsers.md index 94584395de..a75145c0de 100644 --- a/content/operate/rs/databases/connect/supported-clients-browsers.md +++ b/content/operate/rs/databases/connect/supported-clients-browsers.md @@ -12,21 +12,21 @@ You can connect to Redis Software databases programmatically using client librar ## Redis client libraries -To connect an application to a Redis database hosted by Redis Software, use a [client library]({{< relref "/develop/clients" >}}) appropriate for your programming language. +To connect an application to a Redis database hosted by Redis Software, use a [client library](/content/develop/clients/_index.md) appropriate for your programming language. You can also use the `redis-cli` utility to connect to a database from the command line. -For examples of each approach, see the [Redis Software quickstart]({{< relref "/operate/rs/installing-upgrading/quickstarts/redis-enterprise-software-quickstart" >}}). +For examples of each approach, see the [Redis Software quickstart](/content/operate/rs/installing-upgrading/quickstarts/redis-enterprise-software-quickstart.md). Note: You cannot use client libraries to configure Redis Software. Instead, use: -- The Redis Software [Cluster Manager UI]({{< relref "/operate/rs/installing-upgrading/quickstarts/redis-enterprise-software-quickstart" >}}) -- The [REST API]({{< relref "/operate/rs/references/rest-api" >}}) -- Command-line utilities, such as [`rladmin`]({{< relref "/operate/rs/references/cli-utilities/rladmin" >}}) +- The Redis Software [Cluster Manager UI](/content/operate/rs/installing-upgrading/quickstarts/redis-enterprise-software-quickstart.md) +- The [REST API](/content/operate/rs/references/rest-api/_index.md) +- Command-line utilities, such as [`rladmin`](/content/operate/rs/references/cli-utilities/rladmin/_index.md) ### Discovery service -All [recommended Redis client libraries]({{< relref "/develop/clients" >}}) support the Redis Sentinel API, so you can use any of them with the [discovery service]({{< relref "/operate/rs/databases/durability-ha/discovery-service.md" >}}). +All [recommended Redis client libraries](/content/develop/clients/_index.md) support the Redis Sentinel API, so you can use any of them with the [discovery service](/content/operate/rs/databases/durability-ha/discovery-service.md). If you need to use a client that doesn't support Sentinel, you can use [Sentinel Tunnel](https://github.com/RedisLabs/sentinel_tunnel) to discover the current primary Redis endpoint with Sentinel and create a TCP tunnel between a local port on the client and the primary endpoint. diff --git a/content/operate/rs/databases/connect/test-client-connectivity.md b/content/operate/rs/databases/connect/test-client-connectivity.md index c77cfc533c..6acdb85c0a 100644 --- a/content/operate/rs/databases/connect/test-client-connectivity.md +++ b/content/operate/rs/databases/connect/test-client-connectivity.md @@ -15,7 +15,7 @@ database. To test client connectivity: -1. After you [create a Redis database]({{< relref "/operate/rs/databases/create" >}}), copy the database endpoint, which contains the cluster name (FQDN). +1. After you [create a Redis database](/content/operate/rs/databases/create.md), copy the database endpoint, which contains the cluster name (FQDN). To view and copy endpoints for a database in the cluster, see the database’s **Configuration > General** section in the Cluster Manager UI: @@ -28,7 +28,7 @@ To test client connectivity: endpoint using the IP address rather than the FQDN. If you succeed, then DNS is not properly configured. For additional details, see - [Configure cluster DNS]({{< relref "/operate/rs/networking/cluster-dns" >}}). + [Configure cluster DNS](/content/operate/rs/networking/cluster-dns.md). If any issues occur when testing database connections, [contact support](https://redis.com/company/support/). @@ -38,11 +38,11 @@ support](https://redis.com/company/support/). After you create a Redis database, you can connect to your database and store data using one of the following methods: -- [`redis-cli`]({{< relref "/operate/rs/references/cli-utilities/redis-cli" >}}), the built-in command-line tool +- [`redis-cli`](/content/operate/rs/references/cli-utilities/redis-cli/_index.md), the built-in command-line tool - [Redis Insight](https://redis.com/redis-enterprise/redis-insight/), a free Redis GUI that is available for macOS, Windows, and Linux -- An application using a Redis client library, such as [`redis-py`](https://github.com/redis/redis-py) for Python. See the [client list]({{< relref "/develop/clients" >}}) to view all Redis clients by language. +- An application using a Redis client library, such as [`redis-py`](https://github.com/redis/redis-py) for Python. See the [client list](/content/develop/clients/_index.md) to view all Redis clients by language. ### Connect with redis-cli @@ -56,25 +56,25 @@ OK "123" ``` -To connect from your own machine rather than from a cluster node, you can [install the standalone `redis-cli` binary]({{< relref "/operate/oss_and_stack/install/install-stack/install-redis-cli" >}}) on Linux or macOS. +To connect from your own machine rather than from a cluster node, you can [install the standalone `redis-cli` binary](/content/operate/oss_and_stack/install/install-stack/install-redis-cli.md) on Linux or macOS. -For more `redis-cli` connection examples, see the [`redis-cli` reference]({{< relref "/operate/rs/references/cli-utilities/redis-cli" >}}). +For more `redis-cli` connection examples, see the [`redis-cli` reference](/content/operate/rs/references/cli-utilities/redis-cli/_index.md). ### Connect with Redis Insight Redis Insight is a free Redis GUI that is available for macOS, Windows, and Linux. -1. [Install Redis Insight]({{< relref "/develop/tools/insight" >}}). +1. [Install Redis Insight](/content/develop/tools/insight/_index.md). 1. Open Redis Insight and select **Add Redis Database**. 1. Enter the host and port in the **Host** and **Port** fields. -1. Select **Use TLS** if [TLS]({{< relref "/operate/rs/security/encryption/tls" >}}) is set up. +1. Select **Use TLS** if [TLS](/content/operate/rs/security/encryption/tls/_index.md) is set up. 1. Select **Add Redis Database** to connect to the database. -See the [Redis Insight documentation]({{< relref "/develop/tools/insight" >}}) for more information. +See the [Redis Insight documentation](/content/develop/tools/insight/_index.md) for more information. ### Connect with Python diff --git a/content/operate/rs/databases/connect/troubleshooting-guide.md b/content/operate/rs/databases/connect/troubleshooting-guide.md index d531b5794f..0ced7fe4ff 100644 --- a/content/operate/rs/databases/connect/troubleshooting-guide.md +++ b/content/operate/rs/databases/connect/troubleshooting-guide.md @@ -92,7 +92,7 @@ Verify that time is synchronized with the time server using one of the following #### Review system logs -Review system logs including the syslog or journal for any error messages, warnings, or critical events. See [Logging]({{< relref "/operate/rs/clusters/logging" >}}) for more information. +Review system logs including the syslog or journal for any error messages, warnings, or critical events. See [Logging](/content/operate/rs/clusters/logging/_index.md) for more information. ## Identify issues caused by security hardening @@ -136,7 +136,7 @@ Review system logs including the syslog or journal for any error messages, warni rlcheck ``` -- Run [`rladmin status issues_only`]({{< relref "/operate/rs/references/cli-utilities/rladmin/status" >}}) and verify that no issues appear: +- Run [`rladmin status issues_only`](/content/operate/rs/references/cli-utilities/rladmin/status.md) and verify that no issues appear: ```sh $ rladmin status issues_only @@ -154,7 +154,7 @@ Review system logs including the syslog or journal for any error messages, warni ``` -- Run [`rladmin status shards`]({{< relref "/operate/rs/references/cli-utilities/rladmin/status#status-shards" >}}). For each shard, `USED_MEMORY` should be less than 25 GB. +- Run [`rladmin status shards`](/content/operate/rs/references/cli-utilities/rladmin/status.md#status-shards). For each shard, `USED_MEMORY` should be less than 25 GB. ```sh $ rladmin status shards @@ -163,7 +163,7 @@ Review system logs including the syslog or journal for any error messages, warni db:1 db1 redis:1 node:1 master 0-16383 2.13MB OK ``` -- Run [`rladmin cluster running_actions`]({{< relref "/operate/rs/references/cli-utilities/rladmin/cluster/running_actions" >}}) and confirm that no tasks are currently running (active): +- Run [`rladmin cluster running_actions`](/content/operate/rs/references/cli-utilities/rladmin/cluster/running_actions.md) and confirm that no tasks are currently running (active): ```sh $ rladmin cluster running_actions @@ -192,15 +192,15 @@ Review system logs including the syslog or journal for any error messages, warni #### Client application issues -1. To identify possible client application issues, test connectivity from the client machine to the database using [`redis-cli`]({{< relref "/operate/rs/references/cli-utilities/redis-cli" >}}): +1. To identify possible client application issues, test connectivity from the client machine to the database using [`redis-cli`](/content/operate/rs/references/cli-utilities/redis-cli/_index.md): - [`INFO`]({{< relref "/commands/info" >}}): + [`INFO`](/content/commands/info.md): ```sh redis-cli -h -p -a INFO ``` - [`PING`]({{< relref "/commands/ping" >}}): + [`PING`](/content/commands/ping.md): ```sh redis-cli -h -p -a PING @@ -248,7 +248,7 @@ Review system logs including the syslog or journal for any error messages, warni #### Server-side latency -- Make sure the database's used memory does not reach the configured database max memory limit. For more details, see [Database memory limits]({{< relref "/operate/rs/databases/memory-performance/memory-limit" >}}). +- Make sure the database's used memory does not reach the configured database max memory limit. For more details, see [Database memory limits](/content/operate/rs/databases/memory-performance/memory-limit.md). - Try to correlate the time of the latency with any surge in the following metrics: @@ -260,15 +260,15 @@ Review system logs including the syslog or journal for any error messages, warni - Expired keys -- Run [`SLOWLOG GET`]({{< relref "/commands/slowlog-get" >}}) using [`redis-cli`]({{< relref "/operate/rs/references/cli-utilities/redis-cli" >}}) to identify slow commands such as [`KEYS`]({{< relref "/commands/keys" >}}) or [`HGETALL`]({{< relref "/commands/hgetall" >}}: +- Run [`SLOWLOG GET`](/content/commands/slowlog-get.md) using [`redis-cli`](/content/operate/rs/references/cli-utilities/redis-cli/_index.md) to identify slow commands such as [`KEYS`](/content/commands/keys.md) or [`HGETALL`](/content/commands/hgetall.md): ```sh redis-cli -h -p -a SLOWLOG GET ``` - Consider using alternative commands such as [`SCAN`]({{< relref "/commands/scan" >}}), [`SSCAN`]({{< relref "/commands/sscan" >}}), [`HSCAN`]({{< relref "/commands/hscan" >}}) and [`ZSCAN`]({{< relref "/commands/zscan" >}}) + Consider using alternative commands such as [`SCAN`](/content/commands/scan.md), [`SSCAN`](/content/commands/sscan.md), [`HSCAN`](/content/commands/hscan.md) and [`ZSCAN`](/content/commands/zscan.md) -- Keys with large memory footprints can cause latency. To identify such keys, compare the keys returned by [`SLOWLOG GET`]({{< relref "/commands/slowlog-get" >}}) with the output of the following commands: +- Keys with large memory footprints can cause latency. To identify such keys, compare the keys returned by [`SLOWLOG GET`](/content/commands/slowlog-get.md) with the output of the following commands: ```sh redis-cli -h -p -a --memkeys @@ -280,9 +280,9 @@ Review system logs including the syslog or journal for any error messages, warni - For additional diagnostics, see: - - [Diagnosing latency issues]({{< relref "/operate/oss_and_stack/management/optimization/latency" >}}) + - [Diagnosing latency issues](/content/operate/oss_and_stack/management/optimization/latency.md) - - [View Redis slow log]({{< relref "/operate/rs/clusters/logging/redis-slow-log" >}}) + - [View Redis slow log](/content/operate/rs/clusters/logging/redis-slow-log.md) #### Client-side latency diff --git a/content/operate/rs/databases/create.md b/content/operate/rs/databases/create.md index 710ba9956b..d75867e983 100644 --- a/content/operate/rs/databases/create.md +++ b/content/operate/rs/databases/create.md @@ -27,13 +27,12 @@ To create a new database using the Cluster Manager UI: 1. If you did not specify a port number for the database, you can find the port number in the **Endpoint** field in the **Databases > Configuration > General** section. -1. [Test client connectivity]({{< relref "/operate/rs/databases/connect/test-client-connectivity" >}}). +1. [Test client connectivity](/content/operate/rs/databases/connect/test-client-connectivity.md). -{{< note >}} -For databases with Active-Active replication for geo-distributed locations, -see [Create an Active-Active database]({{< relref "/operate/rs/databases/active-active/create.md" >}}). To create and manage Active-Active databases, use the legacy UI. -{{< /note >}} +> [!NOTE] +> For databases with Active-Active replication for geo-distributed locations, +> see [Create an Active-Active database](/content/operate/rs/databases/active-active/create.md). To create and manage Active-Active databases, use the legacy UI. ### Quick database @@ -59,7 +58,7 @@ To quickly create a database and skip additional configuration options during in {{}} -1. Optionally select **Full options** to configure [additional settings]({{< relref "/operate/rs/databases/configure#config-settings" >}}). +1. Optionally select **Full options** to configure [additional settings](/content/operate/rs/databases/configure/_index.md#config-settings). 1. Select **Create**. @@ -81,11 +80,11 @@ To create a new database and configure additional settings: - **Single Region** - - **Active-Active database** - Multiple participating Redis Software clusters can host instances of the same [Active-Active database]({{< relref "/operate/rs/databases/active-active" >}}) in different geographic locations. Every instance can receive write operations, which are synchronized across all instances without conflict. + - **Active-Active database** - Multiple participating Redis Software clusters can host instances of the same [Active-Active database](/content/operate/rs/databases/active-active/_index.md) in different geographic locations. Every instance can receive write operations, which are synchronized across all instances without conflict. - {{}} -For Active-Active databases, see [Create an Active-Active geo-replicated database]({{< relref "/operate/rs/databases/active-active/create" >}}). - {{}} + > [!NOTE] + > For Active-Active databases, see [Create an Active-Active geo-replicated database](/content/operate/rs/databases/active-active/create.md). + > 1. Select a Redis version from the **Database version** list. @@ -101,13 +100,13 @@ For Active-Active databases, see [Create an Active-Active geo-replicated databas 1. To configure additional database settings, expand each relevant section to make changes. - See [Configuration settings]({{< relref "/operate/rs/databases/configure#config-settings" >}}) for more information about each setting. + See [Configuration settings](/content/operate/rs/databases/configure/_index.md#config-settings) for more information about each setting. 1. Select **Create**. ## REST API method -To [create a database]({{}}) using a REST API request: +To [create a database](/content/operate/rs/references/rest-api/requests/bdbs/_index.md#post-bdbs-v1) using a REST API request: ```sh POST https://:/v1/bdbs @@ -119,7 +118,7 @@ POST https://:/v1/bdbs } ``` -For additional database configuration fields, see the [BDB object]({{}}) reference. +For additional database configuration fields, see the [BDB object](/content/operate/rs/references/rest-api/objects/bdb/_index.md) reference. ## Continue learning with Redis University diff --git a/content/operate/rs/databases/durability-ha/_index.md b/content/operate/rs/databases/durability-ha/_index.md index ae89d25104..a29db23c9f 100644 --- a/content/operate/rs/databases/durability-ha/_index.md +++ b/content/operate/rs/databases/durability-ha/_index.md @@ -15,24 +15,24 @@ Redis Software comes with several features that make your data more durable and ## Replication -When you [replicate your database]({{}}), each database instance (primary shard) is copied to a replica shard. When a primary shard fails, the cluster automatically promotes a replica shard to primary. +When you [replicate your database](/content/operate/rs/databases/durability-ha/replication.md), each database instance (primary shard) is copied to a replica shard. When a primary shard fails, the cluster automatically promotes a replica shard to primary. ## Clustering -[Clustering]({{}}) (or sharding) breaks your database into individual instances (shards) and spreads them across several nodes. Clustering lets you add resources to your cluster to scale your database and prevents node failures from causing availability loss. +[Clustering](/content/operate/rs/databases/durability-ha/clustering.md) (or sharding) breaks your database into individual instances (shards) and spreads them across several nodes. Clustering lets you add resources to your cluster to scale your database and prevents node failures from causing availability loss. ## Database persistence -[Database persistence]({{}}) gives your database durability against process or server failures by saving data to disk at set intervals. +[Database persistence](/content/operate/rs/databases/configure/database-persistence.md) gives your database durability against process or server failures by saving data to disk at set intervals. ## Active-Active geo-distributed replication -[Active-Active Redis Software databases]({{}}) allow reading and writing to the same dataset from multiple clusters in different geographic locations. This increases the durability of your database by reducing the likelihood of data or availability loss. It also reduces data access latency by serving requests from the nearest cluster. +[Active-Active Redis Software databases](/content/operate/rs/databases/active-active/_index.md) allow reading and writing to the same dataset from multiple clusters in different geographic locations. This increases the durability of your database by reducing the likelihood of data or availability loss. It also reduces data access latency by serving requests from the nearest cluster. ## Rack-zone awareness -[Rack-zone awareness]({{}}) maps each node in your Redis Software cluster to a physical rack or logical zone. The cluster uses this information to distribute primary shards and their replica shards in different racks or zones. This ensures data availability if a rack or zone fails. +[Rack-zone awareness](/content/operate/rs/clusters/configure/rack-zone-awareness.md) maps each node in your Redis Software cluster to a physical rack or logical zone. The cluster uses this information to distribute primary shards and their replica shards in different racks or zones. This ensures data availability if a rack or zone fails. ## Discovery service -The [discovery service]({{}}) provides an IP-based connection management service used when connecting to Redis Software databases. It lets your application discover which node hosts the database endpoint. The discovery service API complies with the [Redis Sentinel API]({{< relref "/operate/oss_and_stack/management/sentinel" >}}#sentinel-api). \ No newline at end of file +The [discovery service](/content/operate/rs/databases/durability-ha/discovery-service.md) provides an IP-based connection management service used when connecting to Redis Software databases. It lets your application discover which node hosts the database endpoint. The discovery service API complies with the [Redis Sentinel API](/content/operate/oss_and_stack/management/sentinel.md#sentinel-api). \ No newline at end of file diff --git a/content/operate/rs/databases/durability-ha/clustering.md b/content/operate/rs/databases/durability-ha/clustering.md index 93306c3394..48b30f7c23 100644 --- a/content/operate/rs/databases/durability-ha/clustering.md +++ b/content/operate/rs/databases/durability-ha/clustering.md @@ -61,7 +61,7 @@ is 3, you can increase the number of shards to 6, 9, or 12. ### Standard hashing policy -When using the standard hashing policy, a clustered Redis Software database behaves similarly to a standard [Redis Open Source cluster]({{< relref "/operate/oss_and_stack/reference/cluster-spec" >}}#hash-tags), except when using multiple hash tags in a key's name. We recommend using only a single hash tag in a key name for hashing in Redis Software. +When using the standard hashing policy, a clustered Redis Software database behaves similarly to a standard [Redis Open Source cluster](/content/operate/oss_and_stack/reference/cluster-spec.md#hash-tags), except when using multiple hash tags in a key's name. We recommend using only a single hash tag in a key name for hashing in Redis Software. - **Keys with a hash tag**: a key's hash tag is any substring between `{` and `}` in the key's name. When a key's name @@ -134,11 +134,10 @@ Examples of such changes include: - Adding new rules in the custom hashing policy. - Deleting rules from the custom hashing policy. -{{< note >}} -The recommended workaround for updates that are not enabled, -or require flushing the database, -is to back up the database and import the data to a newly configured database. -{{< /note >}} +> [!NOTE] +> The recommended workaround for updates that are not enabled, +> or require flushing the database, +> is to back up the database and import the data to a newly configured database. ## Multi-key operations {#multikey-operations} @@ -155,14 +154,14 @@ the following limitations: Commands that affect all keys or keys that match a specified pattern are allowed in a clustered database, for example: FLUSHDB, FLUSHALL, KEYS - {{< note >}} -When using these commands in a sharded setup, -the command is distributed across multiple shards -and the responses from all shards are combined into a single response. - {{< /note >}} + > [!NOTE] + > When using these commands in a sharded setup, + > the command is distributed across multiple shards + > and the responses from all shards are combined into a single response. + > -- **Geo commands**: For the [GEORADIUS]({{< relref "/commands/georadius" >}}) and - [GEORADIUSBYMEMBER]({{< relref "/commands/georadiusbymember" >}}) commands, the +- **Geo commands**: For the [GEORADIUS](/content/commands/georadius.md) and + [GEORADIUSBYMEMBER](/content/commands/georadiusbymember.md) commands, the STORE and STOREDIST options can only be used when all affected keys reside in the same slot. - **Transactions**: All operations within a WATCH / MULTI / EXEC block diff --git a/content/operate/rs/databases/durability-ha/consistency.md b/content/operate/rs/databases/durability-ha/consistency.md index ace4eec40b..27a11251c1 100644 --- a/content/operate/rs/databases/durability-ha/consistency.md +++ b/content/operate/rs/databases/durability-ha/consistency.md @@ -11,7 +11,7 @@ weight: 20 --- Redis Software comes with the ability to replicate data to another database instance for high availability and persist in-memory data on -disk permanently for durability. With the [`WAIT`]({{}}) command, you can +disk permanently for durability. With the [`WAIT`](/content/commands/wait.md) command, you can control the consistency and durability guarantees for the replicated and persisted database. @@ -32,7 +32,7 @@ Any updates that are issued to the database are typically performed with the fol ## Blocking write operation on replication -With the [`WAIT`]({{}}) or [`WAITAOF`]({{}}) commands, applications can ask to wait for +With the [`WAIT`](/content/commands/wait.md) or [`WAITAOF`](/content/commands/waitaof.md) commands, applications can ask to wait for acknowledgments only after replication or persistence is confirmed on the replica. The flow of a write operation with `WAIT` or `WAITAOF` is: @@ -48,4 +48,4 @@ The application only gets the acknowledgment from the write after durability is The `WAIT` command always returns the number of replicas that acknowledged the write commands sent by the current client before the `WAIT` command, both in the case where the specified number of replicas are reached, or when the timeout is reached. In Redis Software, the number of replicas for HA enabled databases is always 1. -See the [`WAITAOF`]({{}}) command for details for enhanced data safety and durability capabilities introduced with Redis 7.2. +See the [`WAITAOF`](/content/commands/waitaof.md) command for details for enhanced data safety and durability capabilities introduced with Redis 7.2. diff --git a/content/operate/rs/databases/durability-ha/discovery-service.md b/content/operate/rs/databases/durability-ha/discovery-service.md index ef27dc7fcf..de37be92a2 100644 --- a/content/operate/rs/databases/durability-ha/discovery-service.md +++ b/content/operate/rs/databases/durability-ha/discovery-service.md @@ -30,7 +30,7 @@ connecting to databases. The Discovery Service is available for querying on each node of the cluster, listening on port 8001. To employ it, your application utilizes a [Redis Sentinel enabled client -library]({{< relref "/operate/rs/databases/connect/supported-clients-browsers.md" >}}) +library](/content/operate/rs/databases/connect/supported-clients-browsers.md) to connect to the Discovery Service and request the endpoint for the given database. The Discovery Service replies with the database's endpoint for that database. In case of a node failure, the Discovery @@ -80,20 +80,19 @@ $ ./redis-cli -p 8001 It is important to note that, the Discovery Service is not a full implementation of the [Redis Sentinel -protocol]({{< relref "/operate/oss_and_stack/management/sentinel" >}}). There are aspects of the +protocol](/content/operate/oss_and_stack/management/sentinel.md). There are aspects of the protocol that are not applicable or would be duplication with existing technology in Redis Software. The Discovery Service implements only the parts required to provide applications with easy High Availability, be compatible with the protocol, and not rely on DNS to derive which node in the cluster to communicate with. -{{< note >}} -To use Redis Sentinel, every database name must be unique across the cluster. -{{< /note >}} +> [!NOTE] +> To use Redis Sentinel, every database name must be unique across the cluster. ## Supported Sentinel commands -The Discovery Service implements only the subset of the [Redis Sentinel commands]({{< relref "/operate/oss_and_stack/management/sentinel#sentinel-commands" >}}) needed for endpoint discovery and high availability. Commands in the open source Sentinel API that are not listed below are not supported. +The Discovery Service implements only the subset of the [Redis Sentinel commands](/content/operate/oss_and_stack/management/sentinel.md#sentinel-commands) needed for endpoint discovery and high availability. Commands in the open source Sentinel API that are not listed below are not supported. | Command | Description | |---------|-------------| @@ -115,13 +114,12 @@ This matters for client compatibility: a client that issues `SENTINEL REPLICAS` ## Redis client support -All [recommended Redis client libraries]({{< relref "/develop/clients" >}}) support the Redis Sentinel API, so you can use any of them with the discovery service. +All [recommended Redis client libraries](/content/develop/clients/_index.md) support the Redis Sentinel API, so you can use any of them with the discovery service. If you need to use a client that doesn't support Sentinel, you can use [Sentinel Tunnel](https://github.com/RedisLabs/sentinel_tunnel) to discover the current primary Redis endpoint with Sentinel and create a TCP tunnel between a local port on the client and the primary endpoint. -{{< note >}} -Redis Sentinel API can return endpoints for both primary and replica -endpoints. -Discovery Service only supports primary endpoints and does not -support returning replica endpoints for a database. -{{< /note >}} +> [!NOTE] +> Redis Sentinel API can return endpoints for both primary and replica +> endpoints. +> Discovery Service only supports primary endpoints and does not +> support returning replica endpoints for a database. diff --git a/content/operate/rs/databases/durability-ha/replication.md b/content/operate/rs/databases/durability-ha/replication.md index 22af865ff8..476d6d9ded 100644 --- a/content/operate/rs/databases/durability-ha/replication.md +++ b/content/operate/rs/databases/durability-ha/replication.md @@ -21,14 +21,13 @@ guarantees that data is served with minimal interruption. You can tune your high availability configuration with: - [Rack/Zone -Awareness]({{< relref "/operate/rs/clusters/configure/rack-zone-awareness.md" >}}) - When rack-zone awareness is used additional logic ensures that master and replica shards never share the same rack, thus ensuring availability even under loss of an entire rack. -- [High Availability for Replica Shards]({{< relref "/operate/rs/databases/configure/replica-ha.md" >}}) - When high availability +Awareness](/content/operate/rs/clusters/configure/rack-zone-awareness.md) - When rack-zone awareness is used additional logic ensures that master and replica shards never share the same rack, thus ensuring availability even under loss of an entire rack. +- [High Availability for Replica Shards](/content/operate/rs/databases/configure/replica-ha.md) - When high availability for replica shards is used, the replica shard is automatically migrated on node failover to maintain high availability. -{{< warning >}} -Enabling replication has implications for the total database size, -as explained in [Database memory limits]({{< relref "/operate/rs/databases/memory-performance/memory-limit.md" >}}). -{{< /warning >}} +> [!WARNING] +> Enabling replication has implications for the total database size, +> as explained in [Database memory limits](/content/operate/rs/databases/memory-performance/memory-limit.md). ## Auto Tiering replication considerations @@ -53,16 +52,15 @@ The recommended sequential replication configuration is two, i.e.: rladmin tune cluster max_redis_forks 1 max_slave_full_syncs 1 ``` -{{< note >}} -This means that at any given time, -only one primary and one replica can be part of a full sync replication process. -{{< /note >}} +> [!NOTE] +> This means that at any given time, +> only one primary and one replica can be part of a full sync replication process. ## Database replication backlog -Redis databases that use [replication for high availability]({{< relref "/operate/rs/databases/durability-ha/replication.md" >}}) maintain a replication backlog (per shard) to synchronize the primary and replica shards of a database. +Redis databases that use [replication for high availability](/content/operate/rs/databases/durability-ha/replication.md) maintain a replication backlog (per shard) to synchronize the primary and replica shards of a database. By default, the replication backlog is set to one percent (1%) of the database size divided by the database number of shards and ranges between 1MB to 250MB per shard. -Use the [`rladmin`]({{< relref "/operate/rs/references/cli-utilities/rladmin" >}}) and the [`crdb-cli`]({{< relref "/operate/rs/references/cli-utilities/crdb-cli" >}}) utilities to control the size of the replication backlog. You can set it to `auto` or set a specific size. +Use the [`rladmin`](/content/operate/rs/references/cli-utilities/rladmin/_index.md) and the [`crdb-cli`](/content/operate/rs/references/cli-utilities/crdb-cli/_index.md) utilities to control the size of the replication backlog. You can set it to `auto` or set a specific size. The syntax varies between regular and Active-Active databases. @@ -80,7 +78,7 @@ crdb-cli crdb update --crdb-guid --default-db-config "{\"repl_backlo In addition to the database replication backlog, Active-Active databases maintain a backlog (per shard) to synchronize the database instances between clusters. By default, the Active-Active replication backlog is set to one percent (1%) of the database size divided by the database number of shards, and ranges between 1MB to 250MB per shard. -Use the [`crdb-cli`]({{< relref "/operate/rs/references/cli-utilities/crdb-cli" >}}) utility to control the size of the CRDT replication backlog. You can set it to `auto` or set a specific size: +Use the [`crdb-cli`](/content/operate/rs/references/cli-utilities/crdb-cli/_index.md) utility to control the size of the CRDT replication backlog. You can set it to `auto` or set a specific size: ```text crdb-cli crdb update --crdb-guid --default-db-config "{\"crdt_repl_backlog_size\": }" @@ -88,7 +86,7 @@ crdb-cli crdb update --crdb-guid --default-db-config "{\"crdt_repl_b **For Redis Software versions earlier than 6.0.20:** The replication backlog and the CRDT replication backlog defaults are set to 1MB and cannot be set dynamically with 'auto' mode. -To control the size of the replication log, use [`rladmin`]({{< relref "/operate/rs/references/cli-utilities/rladmin" >}}) to tune the local database instance in each cluster. +To control the size of the replication log, use [`rladmin`](/content/operate/rs/references/cli-utilities/rladmin/_index.md) to tune the local database instance in each cluster. ```text rladmin tune db repl_backlog ``` \ No newline at end of file diff --git a/content/operate/rs/databases/flash/_index.md b/content/operate/rs/databases/flash/_index.md index 241a1c76c3..d72ae960d0 100644 --- a/content/operate/rs/databases/flash/_index.md +++ b/content/operate/rs/databases/flash/_index.md @@ -14,10 +14,10 @@ aliases: /operate/rs/databases/auto-tiering/ --- {{}} -This article includes a general overview of Flex and its predecessor Auto Tiering. For more detailed information about Flex, see the dedicated [Flex databases]({{}}) section instead. +This article includes a general overview of Flex and its predecessor Auto Tiering. For more detailed information about Flex, see the dedicated [Flex databases](/content/operate/rs/flex/_index.md) section instead. {{}} -[Flex]({{}}) and Auto Tiering in Redis Software enable databases to use solid state drives (SSDs) to extend beyond DRAM capacity. +[Flex](/content/operate/rs/flex/_index.md) and Auto Tiering in Redis Software enable databases to use solid state drives (SSDs) to extend beyond DRAM capacity. Developers can build applications that require large datasets using the same Redis API. Using SSDs can significantly reduce the infrastructure costs compared to only DRAM deployments. @@ -29,7 +29,7 @@ Flex is based on a high-performance storage engine (Speedb) that manages the com Just like all-RAM databases, Flex databases are compatible with existing Redis applications. -Flex is also supported on [Redis Cloud]({{< relref "/operate/rc/" >}}) and [Redis Enterprise Software for Kubernetes]({{< relref "/operate/kubernetes/flex" >}}). +Flex is also supported on [Redis Cloud](/content/operate/rc/_index.md) and [Redis Enterprise Software for Kubernetes](/content/operate/kubernetes/flex/_index.md). ## Flex versus Auto Tiering @@ -43,7 +43,7 @@ Redis database versions support Flex and Auto Tiering as follows: | 7.4 | ✅ | ✅| | 7.2 and earlier | ❌ | ✅ | -Flex requires the Speedb driver, while Auto Tiering can use either RocksDB or Speedb. See [Manage Auto Tiering storage engine]({{}}) for more information. +Flex requires the Speedb driver, while Auto Tiering can use either RocksDB or Speedb. See [Manage Auto Tiering storage engine](/content/operate/rs/databases/flash/storage-engine.md) for more information. ## Use cases @@ -76,7 +76,8 @@ All data is accessed through RAM. If a key or value in flash memory is accessed, Inactive or infrequently accessed data is referred to as "warm data" and stored in flash memory. When more space is needed in RAM, warm keys and values are moved from RAM to flash storage. -{{}} When using Auto Tiering with Redis Search, indexes are also stored in RAM.{{}} +> [!NOTE] +> When using Auto Tiering with Redis Search, indexes are also stored in RAM. ## RAM to Flash ratio @@ -95,7 +96,8 @@ Implementing Flex requires pre planning around memory and sizing. Considerations - For Auto Tiering, the available flash space must be greater than or equal to the total database size (RAM+Flash). The extra space accounts for write buffers and [write amplification](https://en.wikipedia.org/wiki/Write_amplification). - For Flex, flash space should be approximately three times the total memory limit of all Flex databases on the node. Because you can increase a database's memory limit after creation, size flash space for the expected peak memory limit. -{{}} The Redis Software database persistent and ephemeral storage should be on different disks, either local or attached. {{}} +> [!NOTE] +> The Redis Software database persistent and ephemeral storage should be on different disks, either local or attached. After these requirements are met, you can create and manage both Flex databases and all-RAM databases in the same cluster. @@ -110,8 +112,8 @@ When running in a cloud environment: - Flash memory is on the ephemeral SSDs of the cloud instance (for example the local NVMe of AWS i4i instances and Azure Lsv2 and Lsv3 series). - Persistent database storage needs to be network attached (for example, AWS EBS for AWS). -{{}} -We specifically recommend "[Storage Optimized I4i - High I/O Instances](https://aws.amazon.com/ec2/instance-types/#storage-optimized)" because of the performance of NVMe for flash memory. {{}} +> [!NOTE] +> We specifically recommend "[Storage Optimized I4i - High I/O Instances](https://aws.amazon.com/ec2/instance-types/#storage-optimized)" because of the performance of NVMe for flash memory. ### On-premises environments @@ -123,14 +125,15 @@ The following table shows which data types and features are supported for Flex a | Data type/feature | Flex support | Auto Tiering support | |-------------------|--------------|----------------------| -| [Active-Active databases]({{}}) | ❌ |✅ Requires Redis
technical team's approval | -| [JSON]({{}}) | ✅ | ✅ | -| [Probabilistic data structures]({{}}) | ✅ | ✅ | -| [Redis Search]({{}}) | ✅ | ✅ | -| Standard [Redis data types]({{}}) | ✅ | ✅ | -| [Time series]({{}}) | ❌ | ✅ | +| [Active-Active databases](/content/operate/rs/databases/active-active/_index.md) | ❌ |✅ Requires Redis
technical team's approval | +| [JSON](/content/develop/data-types/json/_index.md) | ✅ | ✅ | +| [Probabilistic data structures](/content/develop/data-types/_index.md#probabilistic-data-types) | ✅ | ✅ | +| [Redis Search](/content/operate/oss_and_stack/stack-with-enterprise/search/_index.md) | ✅ | ✅ | +| Standard [Redis data types](/content/develop/data-types/_index.md) | ✅ | ✅ | +| [Time series](/content/develop/data-types/timeseries/_index.md) | ❌ | ✅ | -{{}}Flex is not supported running on network attached storage (NAS), storage area network (SAN), or with local HDD drives. {{}} +> [!WARNING] +> Flex is not supported running on network attached storage (NAS), storage area network (SAN), or with local HDD drives. ## Size limits for keys and values @@ -146,14 +149,14 @@ If oversized keys consume the shard's available RAM, the shard can return out-of ## Next steps -- [Get started with Flex databases for Redis Software]({{< relref "/operate/rs/flex/get-started" >}}) +- [Get started with Flex databases for Redis Software](/content/operate/rs/flex/get-started.md) -- [Auto Tiering quick start]({{< relref "/operate/rs/databases/flash/quickstart" >}}) +- [Auto Tiering quick start](/content/operate/rs/databases/flash/quickstart.md) -- [Ephemeral and persistent storage]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage" >}}) +- [Ephemeral and persistent storage](/content/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage.md) -- [Plan a Flex deployment for Redis Software]({{}}) +- [Plan a Flex deployment for Redis Software](/content/operate/rs/flex/plan.md) -- [Hardware requirements]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md" >}}) +- [Hardware requirements](/content/operate/rs/installing-upgrading/install/plan-deployment/hardware-requirements.md) -- [Flex and Auto Tiering metrics]({{< relref "/operate/rs/references/metrics/auto-tiering" >}}) +- [Flex and Auto Tiering metrics](/content/operate/rs/references/metrics/auto-tiering.md) diff --git a/content/operate/rs/databases/flash/quickstart.md b/content/operate/rs/databases/flash/quickstart.md index 85ad3911e9..f394bd16eb 100644 --- a/content/operate/rs/databases/flash/quickstart.md +++ b/content/operate/rs/databases/flash/quickstart.md @@ -13,12 +13,12 @@ aliases: /operate/rs/databases/auto-tiering/quickstart/ --- {{}} -This article includes a quick start for Flex and its predecessor Auto Tiering. For more detailed information about Flex, see the dedicated [Flex databases]({{}}) section instead. +This article includes a quick start for Flex and its predecessor Auto Tiering. For more detailed information about Flex, see the dedicated [Flex databases](/content/operate/rs/flex/_index.md) section instead. {{}} -This page guides you through a quick setup of [Flex and Auto Tiering]({{< relref "/operate/rs/databases/flash" >}}) with a single node for testing and demo purposes. +This page guides you through a quick setup of [Flex and Auto Tiering](/content/operate/rs/databases/flash/_index.md) with a single node for testing and demo purposes. -For production environments, you can find more detailed installation instructions in the [install and setup]({{< relref "/operate/rs/installing-upgrading" >}}) section. +For production environments, you can find more detailed installation instructions in the [install and setup](/content/operate/rs/installing-upgrading/_index.md) section. The steps to set up a Redis Software cluster using Flex with a single node are: @@ -91,10 +91,10 @@ sudo lsblk 1. Direct your browser to `https://localhost:8443` on the host machine to see the Redis Software Cluster Manager UI. - {{}} -Depending on your browser, you may see a certificate error. -Choose "continue to the website" to go to the setup screen. - {{}} + > [!NOTE] + > Depending on your browser, you may see a certificate error. + > Choose "continue to the website" to go to the setup screen. + > 1. Select **Create new cluster**. @@ -131,8 +131,8 @@ You now have a database with Flex enabled! ## Connect to your database -After you create the database, you can connect to it and store data. See [Test client connection]({{}}) for connection options and examples. +After you create the database, you can connect to it and store data. See [Test client connection](/content/operate/rs/databases/connect/test-client-connectivity.md) for connection options and examples. ## Next steps -To see the true performance and scale of Flex, you must tune your I/O path and set the flash path to the mounted path of SSD or NVMe flash memory as that is what it is designed to run on. For more information, see [Flex and Auto Tiering]({{< relref "/operate/rs/databases/flash/" >}}). +To see the true performance and scale of Flex, you must tune your I/O path and set the flash path to the mounted path of SSD or NVMe flash memory as that is what it is designed to run on. For more information, see [Flex and Auto Tiering](/content/operate/rs/databases/flash/_index.md). diff --git a/content/operate/rs/databases/flash/storage-engine.md b/content/operate/rs/databases/flash/storage-engine.md index 71f9522eba..43ad09eda1 100644 --- a/content/operate/rs/databases/flash/storage-engine.md +++ b/content/operate/rs/databases/flash/storage-engine.md @@ -12,7 +12,7 @@ aliases: /operate/rs/databases/auto-tiering/storage-engine/ --- {{}} -This article includes information about the storage engines used by Flex and its predecessor Auto Tiering. For more detailed information about Flex, see the dedicated [Flex databases]({{}}) section instead. +This article includes information about the storage engines used by Flex and its predecessor Auto Tiering. For more detailed information about Flex, see the dedicated [Flex databases](/content/operate/rs/flex/_index.md) section instead. {{}} ## Manage the storage engine @@ -25,7 +25,8 @@ Auto Tiering supports two storage engines: Flex supports Speedb only. -{{}}Switching between storage engines requires guidance by Redis Support or your Account Manager.{{}} +> [!WARNING] +> Switching between storage engines requires guidance by Redis Support or your Account Manager. ### Change the storage engine @@ -49,7 +50,8 @@ Flex supports Speedb only. rladmin restart db { db: | } ``` -{{}} We recommend restarting your database at times with low usage and avoiding peak hours. For databases without persistence enabled, we also recommend using export to backup your database first.{{}} +> [!NOTE] +> We recommend restarting your database at times with low usage and avoiding peak hours. For databases without persistence enabled, we also recommend using export to backup your database first. ## Monitor the storage engine @@ -71,4 +73,4 @@ Versions of Redis Software 7.2 and later provide a metric called `bdb_bigstore_s bdb_bigstore_shard_count{bdb="1",cluster="mycluster.local",driver="speedb"} 2.0 ``` -For more about metrics for Redis Software’s integration with Prometheus, see [Prometheus integration]({{< relref "/integrate/prometheus-with-redis-enterprise/prometheus-metrics-definitions" >}}). +For more about metrics for Redis Software’s integration with Prometheus, see [Prometheus integration](/content/integrate/prometheus-with-redis-enterprise/prometheus-metrics-definitions.md). diff --git a/content/operate/rs/databases/import-export/export-data.md b/content/operate/rs/databases/import-export/export-data.md index 61c950d0bc..e3361e5859 100644 --- a/content/operate/rs/databases/import-export/export-data.md +++ b/content/operate/rs/databases/import-export/export-data.md @@ -50,7 +50,7 @@ To export data from a database using the Cluster Manager UI: Data can be exported to a local mount point, transferred to [a URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) using FTP/SFTP, or stored on cloud provider storage. -When saved to a local mount point or a cloud provider, export locations need to be available to [the group and user]({{< relref "/operate/rs/installing-upgrading/install/customize-user-and-group.md" >}}) running Redis Software, `redislabs:redislabs` by default. +When saved to a local mount point or a cloud provider, export locations need to be available to [the group and user](/content/operate/rs/installing-upgrading/install/customize-user-and-group.md) running Redis Software, `redislabs:redislabs` by default. Redis Software needs the ability to view permissions and update objects in the storage location. Implementation details vary according to the provider and your configuration. To learn more, consult the provider's documentation. @@ -164,7 +164,7 @@ You can also connect to a storage service that uses the S3 protocol but is not h To connect to an S3-compatible storage location: -1. Configure the S3 URL with [`rladmin cluster config`]({{}}): +1. Configure the S3 URL with [`rladmin cluster config`](/content/operate/rs/references/cli-utilities/rladmin/cluster/config.md): ```sh rladmin cluster config s3_url diff --git a/content/operate/rs/databases/import-export/flush.md b/content/operate/rs/databases/import-export/flush.md index a53518a1a9..9f65eb0041 100644 --- a/content/operate/rs/databases/import-export/flush.md +++ b/content/operate/rs/databases/import-export/flush.md @@ -17,10 +17,9 @@ you can flush the data from the database. You can use the Cluster Manager UI to flush data from Active-Active databases. -{{< warning title="Data Loss Warning" >}} -The flush command deletes ALL in-memory and persistence data in the database. -We recommend that you [back up your database]({{< relref "/operate/rs/databases/import-export/schedule-backups.md" >}}) before you flush the data. -{{< /warning >}} +> [!WARNING] Data Loss Warning +> The flush command deletes ALL in-memory and persistence data in the database. +> We recommend that you [back up your database](/content/operate/rs/databases/import-export/schedule-backups.md) before you flush the data. ## Flush data from a database @@ -38,9 +37,8 @@ Example: redis-cli -h redis-12345.cluster.local -p 9443 -a xyz flushall ``` -{{< note >}} -Port 9443 is the default [port configuration]({{< relref "/operate/rs/networking/port-configurations#https://docs.redis.com/latest/rs/networking/port-configurations#ports-and-port-ranges-used-by-redis-enterprise-software" >}}). -{{< /note >}} +> [!NOTE] +> Port 9443 is the default [port configuration](/content/operate/rs/networking/port-configurations.md#https://docs.redis.com/latest/rs/networking/port-configurations#ports-and-port-ranges-used-by-redis-enterprise-software). ## Flush data from an OSS Cluster API database @@ -54,7 +52,7 @@ Follow these steps to flush all data from an OSS Cluster API database: dig +noall +answer ``` -2. Connect to each IP address using [`redis-cli`]({{}}) and run the [`FLUSHDB`]({{}}) command: +2. Connect to each IP address using [`redis-cli`](/content/operate/rs/references/cli-utilities/redis-cli/_index.md) and run the [`FLUSHDB`](/content/commands/flushdb.md) command: ```sh redis-cli -h -p flushdb @@ -86,9 +84,8 @@ This ensures that all shards in the OSS Cluster API database are flushed properl When you flush an Active-Active database (formerly known as CRDB), all of the replicas flush their data at the same time. -{{< note >}} -Run flush from only one participating cluster. The flush operation propagates to all other clusters automatically. -{{< /note >}} +> [!NOTE] +> Run flush from only one participating cluster. The flush operation propagates to all other clusters automatically. To flush data from an Active-Active database, use one of the following methods: @@ -153,13 +150,13 @@ To flush data from an Active-Active database, use one of the following methods: - REST API - 1. To find the ID of the Active-Active database, use [`GET /v1/crdbs`]({{< relref "/operate/rs/references/rest-api/requests/crdbs#get-all-crdbs" >}}): + 1. To find the ID of the Active-Active database, use [`GET /v1/crdbs`](/content/operate/rs/references/rest-api/requests/crdbs/_index.md#get-all-crdbs): ```sh GET https://[host][:port]/v1/crdbs ``` - 1. To flush the Active-Active database, use [`PUT /v1/crdbs/{guid}/flush`]({{< relref "/operate/rs/references/rest-api/requests/crdbs/flush#put-crdbs-flush" >}}): + 1. To flush the Active-Active database, use [`PUT /v1/crdbs/{guid}/flush`](/content/operate/rs/references/rest-api/requests/crdbs/flush.md#put-crdbs-flush): ```sh PUT https://[host][:port]/v1/crdbs//flush @@ -167,7 +164,7 @@ To flush data from an Active-Active database, use one of the following methods: The command output contains the task ID of the flush task. - 1. To check the status of the flush task, use [`GET /v1/crdb_tasks`]({{< relref "/operate/rs/references/rest-api/requests/crdb_tasks#get-crdb_task" >}}): + 1. To check the status of the flush task, use [`GET /v1/crdb_tasks`](/content/operate/rs/references/rest-api/requests/crdb_tasks/_index.md#get-crdb_task): ```sh GET https://[host][:port]/v1/crdb_tasks/ diff --git a/content/operate/rs/databases/import-export/import-data.md b/content/operate/rs/databases/import-export/import-data.md index de9658d265..bb55193848 100644 --- a/content/operate/rs/databases/import-export/import-data.md +++ b/content/operate/rs/databases/import-export/import-data.md @@ -9,15 +9,14 @@ description: You can import export or backup files of a specific Redis Software linktitle: Import data weight: 10 --- -You can import, [export]({{< relref "/operate/rs/databases/import-export/export-data" >}}), -or [backup]({{< relref "/operate/rs/databases/import-export/schedule-backups" >}}) +You can import, [export](/content/operate/rs/databases/import-export/export-data.md), +or [backup](/content/operate/rs/databases/import-export/schedule-backups.md) files of a specific Redis Software database to restore data. You can either import from a single file or from multiple files, such as when you want to import from a backup of a clustered database. -{{< warning >}} -Importing data erases all existing content in the database. -{{< /warning >}} +> [!WARNING] +> Importing data erases all existing content in the database. ## Import data into a database @@ -35,7 +34,7 @@ To import data into a database using the Cluster Manager UI: ### REST API method -To import data into a database using the REST API, send an [import database request]({{}}): +To import data into a database using the REST API, send an [import database request](/content/operate/rs/references/rest-api/requests/bdbs/actions/import.md): ```sh POST /v1/bdbs//actions/import @@ -72,7 +71,7 @@ See the following storage location sections for REST API request examples for ea Data can be imported from a local mount point, transferred to [a URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) using FTP/SFTP, or stored on cloud provider storage. -When importing from a local mount point or a cloud provider, import locations need to be available to [the group and user]({{< relref "/operate/rs/installing-upgrading/install/customize-user-and-group.md" >}}) running Redis Software, `redislabs:redislabs` by default. +When importing from a local mount point or a cloud provider, import locations need to be available to [the group and user](/content/operate/rs/installing-upgrading/install/customize-user-and-group.md) running Redis Software, `redislabs:redislabs` by default. Redis Software needs the ability to view objects in the storage location. Implementation details vary according to the provider and your configuration. To learn more, consult the provider's documentation. @@ -105,7 +104,7 @@ Example: `ftp://username:password@10.1.1.1/home/backups/.rdb` Select **Add path** to add another import file path. -Example [import database REST API request]({{}}): +Example [import database REST API request](/content/operate/rs/references/rest-api/requests/bdbs/actions/import.md): ```sh POST /v1/bdbs//actions/import @@ -149,7 +148,7 @@ As of version 6.2.12, Redis Software reads files directly from the mount point u Select **Add path** to add another import file path. -Example [import database REST API request]({{}}): +Example [import database REST API request](/content/operate/rs/references/rest-api/requests/bdbs/actions/import.md): ```sh POST /v1/bdbs//actions/import @@ -201,7 +200,7 @@ Example: `sftp://username:password@10.1.1.1/home/backups/[filename].rdb` Select **Add path** to add another import file path. -Example [import database REST API request]({{}}): +Example [import database REST API request](/content/operate/rs/references/rest-api/requests/bdbs/actions/import.md): ```sh POST /v1/bdbs//actions/import @@ -236,7 +235,7 @@ You can also connect to a storage service that uses the S3 protocol but is not h To connect to an S3-compatible storage location: -1. Configure the S3 URL with [`rladmin cluster config`]({{}}): +1. Configure the S3 URL with [`rladmin cluster config`](/content/operate/rs/references/cli-utilities/rladmin/cluster/config.md): ```sh rladmin cluster config s3_url @@ -252,7 +251,7 @@ To connect to an S3-compatible storage location: Replace `` with the location of the S3 CA certificate `ca.pem`. -Example [import database REST API request]({{}}): +Example [import database REST API request](/content/operate/rs/references/rest-api/requests/bdbs/actions/import.md): ```sh POST /v1/bdbs//actions/import @@ -293,7 +292,7 @@ In the Redis Software Cluster Manager UI, when you enter the import location det - In the **Private key** field, enter the `private_key` from the service account key. Replace `\n` with new lines. -Example [import database REST API request]({{}}): +Example [import database REST API request](/content/operate/rs/references/rest-api/requests/bdbs/actions/import.md): ```sh POST /v1/bdbs//actions/import @@ -335,7 +334,7 @@ In the Redis Software Cluster Manager UI, when you enter the import location det - In the **Azure Account Key** field, enter the storage account key. -Example [import database REST API request]({{}}): +Example [import database REST API request](/content/operate/rs/references/rest-api/requests/bdbs/actions/import.md): ```sh POST /v1/bdbs//actions/import @@ -357,7 +356,7 @@ POST /v1/bdbs//actions/import When importing data into an Active-Active database, there are two options: -- [Flush all data]({{< relref "/operate/rs/databases/import-export/flush#flush-data-from-an-active-active-database" >}}) from the Active-Active database, then import the data into the database. +- [Flush all data](/content/operate/rs/databases/import-export/flush.md#flush-data-from-an-active-active-database) from the Active-Active database, then import the data into the database. - Import data but merge it into the existing database. Because Active-Active databases have a numeric counter data type, diff --git a/content/operate/rs/databases/import-export/migrate-to-active-active.md b/content/operate/rs/databases/import-export/migrate-to-active-active.md index 87a3fde27b..6749c82f2d 100644 --- a/content/operate/rs/databases/import-export/migrate-to-active-active.md +++ b/content/operate/rs/databases/import-export/migrate-to-active-active.md @@ -10,8 +10,8 @@ linktitle: Migrate to Active-Active weight: $weight --- -If you have data in a single-region Redis Software database that you want to migrate to an [Active-Active database]({{< relref "/operate/rs/databases/active-active" >}}), -you'll need to create a new Active-Active database and migrate the data into the new database as a [Replica Of]({{< relref "/operate/rs/databases/import-export/replica-of/" >}}) the existing database. +If you have data in a single-region Redis Software database that you want to migrate to an [Active-Active database](/content/operate/rs/databases/active-active/_index.md), +you'll need to create a new Active-Active database and migrate the data into the new database as a [Replica Of](/content/operate/rs/databases/import-export/replica-of/_index.md) the existing database. This process will gradually populate the data in the Active-Active database. Before data migration starts, all data is flushed from the Active-Active database. @@ -26,7 +26,7 @@ When data migration is finished, turn off migration and connect your application - During the migration, any applications that connect to the Active-Active database must be **read-only** to ensure the dataset is identical to the source database during the migration process. However, you can continue to write to the source database during the migration process. - If you used the mDNS protocol for the cluster name (FQDN), -the [client mDNS prerequisites]({{< relref "/operate/rs/networking/mdns" >}}) must be met in order to communicate with other clusters. +the [client mDNS prerequisites](/content/operate/rs/networking/mdns.md) must be met in order to communicate with other clusters. ## Migrate from a Redis Software cluster @@ -36,7 +36,7 @@ You can migrate a Redis Software database from the [same cluster](#migrate-from- To migrate a database to Active-Active in the same Redis Software cluster: -1. Create a new Active-Active database. For prerequisites and detailed instructions, see [Create an Active-Active geo-replicated database]({{< relref "/operate/rs/databases/active-active/create" >}}). +1. Create a new Active-Active database. For prerequisites and detailed instructions, see [Create an Active-Active geo-replicated database](/content/operate/rs/databases/active-active/create.md). 1. After the Active-Active database is active, click **Edit** on the **Configuration** screen. @@ -58,10 +58,9 @@ To migrate a database to Active-Active in the same Redis Software cluster: ### Migrate from a different cluster -{{< note >}} -For a source database on a different Redis Software cluster, -you can [compress the replication data]({{< relref "/operate/rs/databases/import-export/replica-of#data-compression-for-replica-of" >}}) to save bandwidth. -{{< /note >}} +> [!NOTE] +> For a source database on a different Redis Software cluster, +> you can [compress the replication data](/content/operate/rs/databases/import-export/replica-of/_index.md#data-compression-for-replica-of) to save bandwidth. To migrate a database to Active-Active in different Redis Software clusters: @@ -81,7 +80,7 @@ To migrate a database to Active-Active in different Redis Software clusters: 1. Sign in to the Cluster Manager UI of the destination database’s cluster. -1. Create a new Active-Active database. For prerequisites and detailed instructions, see [Create an Active-Active geo-replicated database]({{< relref "/operate/rs/databases/active-active/create" >}}). +1. Create a new Active-Active database. For prerequisites and detailed instructions, see [Create an Active-Active geo-replicated database](/content/operate/rs/databases/active-active/create.md). 1. After the Active-Active database is active, click **Edit** on the **Configuration** screen. @@ -105,7 +104,7 @@ To migrate a database to Active-Active in different Redis Software clusters: To migrate a Redis Open Source database to Active-Active: -1. Create a new Active-Active database. For prerequisites and detailed instructions, see [Create an Active-Active geo-replicated database]({{< relref "/operate/rs/databases/active-active/create" >}}). +1. Create a new Active-Active database. For prerequisites and detailed instructions, see [Create an Active-Active geo-replicated database](/content/operate/rs/databases/active-active/create.md). 1. After the Active-Active database is active, click **Edit** on the **Configuration** screen. @@ -143,9 +142,9 @@ To migrate a Redis Open Source database to Active-Active: 1. Wait until the migration is complete, indicated by the **Status** _Synced_. - {{}} -Migration can take minutes to hours to complete depending on the dataset size and network quality. - {{}} + > [!NOTE] + > Migration can take minutes to hours to complete depending on the dataset size and network quality. + > 1. On the Active-Active database's **Configuration** screen, click **Edit**. diff --git a/content/operate/rs/databases/import-export/replica-of/_index.md b/content/operate/rs/databases/import-export/replica-of/_index.md index 2dd546a166..ee64b42078 100644 --- a/content/operate/rs/databases/import-export/replica-of/_index.md +++ b/content/operate/rs/databases/import-export/replica-of/_index.md @@ -21,19 +21,17 @@ all write commands are synchronized from the sources to the destination. Replica Of lets you distribute the read load of your application across multiple databases or synchronize the database, either within Redis Software or external to Redis Software, to another database. -{{< warning >}} -Do not write directly to a Replica Of destination database, because it can result in replication errors, data inconsistencies, or data loss. See [Enforce read-only access]({{}}) for details and instructions. -{{< /warning >}} +> [!WARNING] +> Do not write directly to a Replica Of destination database, because it can result in replication errors, data inconsistencies, or data loss. See [Enforce read-only access](/content/operate/rs/databases/import-export/replica-of/create.md#enforce-read-only-access) for details and instructions. -You can [create Active-Passive]({{< relref "/operate/rs/databases/import-export/replica-of/create.md" >}}) databases on Redis Software or Redis Cloud. +You can [create Active-Passive](/content/operate/rs/databases/import-export/replica-of/create.md) databases on Redis Software or Redis Cloud. -[Active-Active Geo-Distribution (CRDB)]({{< relref "/operate/rs/databases/active-active" >}}) +[Active-Active Geo-Distribution (CRDB)](/content/operate/rs/databases/active-active/_index.md) provides these benefits and also provides write access to all of the database replicas. -{{< warning >}} -Configuring a database as a replica of the database that it replicates -creates a cyclical replication and is not supported. -{{< /warning >}} +> [!WARNING] +> Configuring a database as a replica of the database that it replicates +> creates a cyclical replication and is not supported. The Replica Of is defined in the context of the destination database by specifying the source databases. @@ -49,13 +47,12 @@ result, commands that were executed in a certain order when compared across source databases might be executed in a different order on the destination database. -{{< note >}} -The Replica Of feature should not be confused with the -in-memory [Database -replication]({{< relref "/operate/rs/databases/durability-ha/replication.md" >}}) -feature, which is used for creating a master / replica configuration that -enables ensuring database high-availability. -{{< /note >}} +> [!NOTE] +> The Replica Of feature should not be confused with the +> in-memory [Database +> replication](/content/operate/rs/databases/durability-ha/replication.md) +> feature, which is used for creating a master / replica configuration that +> enables ensuring database high-availability. ## Replication process @@ -104,11 +101,10 @@ the source was executed on the destination. The system also displays the destination database status as an aggregate of the statuses of all the sources. -{{< note >}} -If you encounter issues with the Replica Of process, refer -to the troubleshooting section [Replica Of repeatedly -fails]({{< relref "/operate/rs/databases/import-export/replica-of/replicaof-repeatedly-fails.md" >}}). -{{< /note >}} +> [!NOTE] +> If you encounter issues with the Replica Of process, refer +> to the troubleshooting section [Replica Of repeatedly +> fails](/content/operate/rs/databases/import-export/replica-of/replicaof-repeatedly-fails.md). ### Synchronization errors @@ -204,27 +200,25 @@ For example, if the database updates for the destination databases that are stored by the destination database in a synchronization backlog exceed their allocated memory, the source database starts a full sync. -{{% warning %}} -When you failover to the destination database for write operations, -make sure that you disable **Replica Of** before you direct clients to the destination database. -This avoids a full sync that can overwrite your data. -{{% /warning %}} +> [!WARNING] +> When you failover to the destination database for write operations, +> make sure that you disable **Replica Of** before you direct clients to the destination database. +> This avoids a full sync that can overwrite your data. ## Upgrade order -When you [upgrade]({{< relref "/operate/rs/installing-upgrading/upgrading/upgrade-database" >}}) a Replica Of database, upgrade the destination database before the source database to avoid possible replication failures. +When you [upgrade](/content/operate/rs/installing-upgrading/upgrading/upgrade-database.md) a Replica Of database, upgrade the destination database before the source database to avoid possible replication failures. ## Active-Passive replication backlog -In addition to the [database replication backlog]({{< relref "/operate/rs/databases/durability-ha/replication#database-replication-backlog" >}}), active-passive databases maintain a replication backlog (per shard) to synchronize the database instances between clusters. +In addition to the [database replication backlog](/content/operate/rs/databases/durability-ha/replication.md#database-replication-backlog), active-passive databases maintain a replication backlog (per shard) to synchronize the database instances between clusters. By default, the replication backlog is set to one percent (1%) of the database size divided by the database number of shards and ranges between 1MB to 250MB per shard. -Use the [`rladmin`]({{< relref "/operate/rs/references/cli-utilities/rladmin" >}}) utility to control the size of the replication backlog. You can set it to `auto` or set a specific size. +Use the [`rladmin`](/content/operate/rs/references/cli-utilities/rladmin/_index.md) utility to control the size of the replication backlog. You can set it to `auto` or set a specific size. For an Active-Passive database: ```text rladmin tune db repl_backlog ``` -{{}} -On an Active-Passive database, the replication backlog configuration applies to both the replication backlog for shards synchronization and for synchronization of database instances between clusters. -{{}} +> [!NOTE] +> On an Active-Passive database, the replication backlog configuration applies to both the replication backlog for shards synchronization and for synchronization of database instances between clusters. diff --git a/content/operate/rs/databases/import-export/replica-of/create.md b/content/operate/rs/databases/import-export/replica-of/create.md index 3d3447de95..aae9e5eb2e 100644 --- a/content/operate/rs/databases/import-export/replica-of/create.md +++ b/content/operate/rs/databases/import-export/replica-of/create.md @@ -41,17 +41,16 @@ You can configure a database as a Replica Of, where the source database is in on The order of the multiple Replica Of sources has no material impact on replication. -For best results when using the [Multicast DNS](https://en.wikipedia.org/wiki/Multicast_DNS) (mDNS) protocol to resolve the fully-qualified domain name (FQDN) of the cluster, verify that your client connections meet the [client mDNS prerequisites]({{< relref "/operate/rs/networking/mdns.md" >}}). +For best results when using the [Multicast DNS](https://en.wikipedia.org/wiki/Multicast_DNS) (mDNS) protocol to resolve the fully-qualified domain name (FQDN) of the cluster, verify that your client connections meet the [client mDNS prerequisites](/content/operate/rs/networking/mdns.md). -{{< note >}} -As long as Replica Of is enabled, data in the target database will not expire and will not be evicted regardless of the set [data eviction policy]({{< relref "/operate/rs/databases/memory-performance/eviction-policy.md" >}}). -{{< /note >}} +> [!NOTE] +> As long as Replica Of is enabled, data in the target database will not expire and will not be evicted regardless of the set [data eviction policy](/content/operate/rs/databases/memory-performance/eviction-policy.md). ### Same Redis Software cluster {#same-cluster} To configure a Replica Of database in the same Redis Software cluster as the source database: -1. [Create a new database]({{< relref "/operate/rs/databases/create" >}}) or select an existing database from the **Databases** screen. +1. [Create a new database](/content/operate/rs/databases/create.md) or select an existing database from the **Databases** screen. 1. For an existing database, select **Edit** from the **Configuration** tab. @@ -73,9 +72,9 @@ To configure a Replica Of database in a different Redis Software cluster from th 1. Ensure the source database's port is allowed through firewalls between the clusters and can be accessed by the destination cluster's nodes. - {{}} -Ports 10000-19999 are reserved for database traffic. See [Network port configurations]({{}}) for more information about ports. - {{}} + > [!NOTE] + > Ports 10000-19999 are reserved for database traffic. See [Network port configurations](/content/operate/rs/networking/port-configurations.md) for more information about ports. + > 1. Sign in to the Cluster Manager UI of the cluster hosting the source database. @@ -93,7 +92,7 @@ Ports 10000-19999 are reserved for database traffic. See [Network port configura 1. Sign in to the Cluster Manager UI of the destination database's cluster. -1. [Create a new database]({{< relref "/operate/rs/databases/create" >}}) or select an existing database from the **Databases** screen. +1. [Create a new database](/content/operate/rs/databases/create.md) or select an existing database from the **Databases** screen. 1. For an existing database, select **Edit** from the **Configuration** tab. @@ -109,13 +108,13 @@ Ports 10000-19999 are reserved for database traffic. See [Network port configura 1. Select **Save**. -For source databases on different clusters, you can [compress replication data]({{< relref "/operate/rs/databases/import-export/replica-of/#data-compression-for-replica-of" >}}) to save bandwidth. +For source databases on different clusters, you can [compress replication data](/content/operate/rs/databases/import-export/replica-of/_index.md#data-compression-for-replica-of) to save bandwidth. ### Redis Open Source cluster {#source-available-cluster} To use a database from a Redis Open Source cluster as a Replica Of source: -1. [Create a new database]({{< relref "/operate/rs/databases/create" >}}) or select an existing database from the **Databases** screen. +1. [Create a new database](/content/operate/rs/databases/create.md) or select an existing database from the **Databases** screen. 1. For an existing database, select **Edit** from the **Configuration** tab. @@ -149,7 +148,7 @@ To use a database from a Redis Open Source cluster as a Replica Of source: Writing directly to a Replica Of destination database is not supported and can result in replication errors, data inconsistencies, or data loss. -As of Redis Software version 7.22.0-95, you can set `replica_read_only` to `true` when you [create a Replica Of database]({{}}) using the REST API. When enabled, the destination database rejects all write operations to prevent accidental writes. Replication remains one-way from source to destination. You cannot change `replica_read_only` after database creation. +As of Redis Software version 7.22.0-95, you can set `replica_read_only` to `true` when you [create a Replica Of database](/content/operate/rs/references/rest-api/requests/bdbs/_index.md#post-bdbs-v2) using the REST API. When enabled, the destination database rejects all write operations to prevent accidental writes. Replication remains one-way from source to destination. You cannot change `replica_read_only` after database creation. To enforce read-only access when you create a Replica Of destination database: @@ -168,7 +167,7 @@ POST https://:/v2/bdbs } ``` -For additional database configuration fields, see the [BDB object]({{}}) reference. +For additional database configuration fields, see the [BDB object](/content/operate/rs/references/rest-api/objects/bdb/_index.md) reference. For Redis Software versions earlier than 7.22.0-95, there is no product-level enforcement preventing writes to the destination database, so you should configure your application to direct all write operations exclusively to the source database. diff --git a/content/operate/rs/databases/import-export/schedule-backups.md b/content/operate/rs/databases/import-export/schedule-backups.md index faa969a866..3df653bfc5 100644 --- a/content/operate/rs/databases/import-export/schedule-backups.md +++ b/content/operate/rs/databases/import-export/schedule-backups.md @@ -14,7 +14,7 @@ Periodic backups provide a way to restore data with minimal data loss. With Red As of v6.2.8, you can specify the start time in UTC for 24-hour or 12-hour backups. -To make an on-demand backup, [export your data]({{< relref "/operate/rs/databases/import-export/export-data.md" >}}). +To make an on-demand backup, [export your data](/content/operate/rs/databases/import-export/export-data.md). You can schedule backups to a variety of locations, including: @@ -25,19 +25,16 @@ You can schedule backups to a variety of locations, including: - Azure Blob Storage - Google Cloud Storage -The backup process creates compressed (.gz) RDB files that you can [import into a database]({{< relref "/operate/rs/databases/import-export/import-data.md" >}}). If the database name is longer than 30 characters, only the first 30 are used in backup file names. +The backup process creates compressed (.gz) RDB files that you can [import into a database](/content/operate/rs/databases/import-export/import-data.md). If the database name is longer than 30 characters, only the first 30 are used in backup file names. When you back up a database configured for database clustering, Redis Software creates a backup file for each shard in the configuration. All backup files are copied to the storage location. -{{< note >}} - -- Make sure that you have enough space available in your storage location. - If there is not enough space in the backup location, the backup fails. -- The backup configuration only applies to the database it is configured on. -- To limit the parallel backup for shards, set both [`tune cluster max_simultaneous_backups`]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-cluster" >}}) and [`tune node max_redis_forks`]({{< relref "/operate/rs/references/cli-utilities/rladmin/tune#tune-node" >}}). `max_simultaneous_backups` is set to 4 by default. - -{{< /note >}} +> [!NOTE] +> - Make sure that you have enough space available in your storage location. +> If there is not enough space in the backup location, the backup fails. +> - The backup configuration only applies to the database it is configured on. +> - To limit the parallel backup for shards, set both [`tune cluster max_simultaneous_backups`](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster) and [`tune node max_redis_forks`](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-node). `max_simultaneous_backups` is set to 4 by default. ## Schedule periodic backups @@ -103,7 +100,7 @@ For help with specific backup issues, [contact support](https://redis.com/compan Database backups can be saved to a local mount point, transferred to [a URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) using FTP/SFTP, or stored on cloud provider storage. -When saved to a local mount point or a cloud provider, backup locations need to be available to [the group and user]({{< relref "/operate/rs/installing-upgrading/install/customize-user-and-group.md" >}}) running Redis Software, `redislabs:redislabs` by default. +When saved to a local mount point or a cloud provider, backup locations need to be available to [the group and user](/content/operate/rs/installing-upgrading/install/customize-user-and-group.md) running Redis Software, `redislabs:redislabs` by default. Redis Software needs the ability to view permissions and update objects in the storage location. Implementation details vary according to the provider and your configuration. To learn more, consult the provider's documentation. @@ -213,7 +210,7 @@ You can also connect to a storage service that uses the S3 protocol but is not h To connect to an S3-compatible storage location: -1. Configure the S3 URL with [`rladmin cluster config`]({{}}): +1. Configure the S3 URL with [`rladmin cluster config`](/content/operate/rs/references/cli-utilities/rladmin/cluster/config.md): ```sh rladmin cluster config s3_url diff --git a/content/operate/rs/databases/memory-performance/_index.md b/content/operate/rs/databases/memory-performance/_index.md index cc29817023..e69dd8f020 100644 --- a/content/operate/rs/databases/memory-performance/_index.md +++ b/content/operate/rs/databases/memory-performance/_index.md @@ -16,11 +16,11 @@ architecture to help optimize storage and performance. ## Memory limits -Database memory limits define the maximum size your database can reach across all database replicas and [shards]({{< relref "/glossary#letter-s" >}}) on the cluster. Your memory limit will also determine the number of shards you'll need. +Database memory limits define the maximum size your database can reach across all database replicas and [shards](/content/glossary/_index.md#letter-s) on the cluster. Your memory limit will also determine the number of shards you'll need. Besides your dataset, the memory limit must also account for replication, Active-Active overhead, and module overhead, and a number of other factors. These can significantly increase your database size, sometimes increasing it by four times or more. -For more information on memory limits, see [Database memory limits]({{< relref "/operate/rs/databases/memory-performance/memory-limit.md" >}}). +For more information on memory limits, see [Database memory limits](/content/operate/rs/databases/memory-performance/memory-limit.md). ## Eviction policies @@ -28,7 +28,7 @@ When a database exceeds its memory limit, eviction policies determine which data The default eviction policy for databases is `volatile-lru` which evicts the least recently used keys out of all keys with the `expire` field set. The default for Active-Active databases is `noeviction`. -For more information, see [eviction policies]({{< relref "/operate/rs/databases/memory-performance/eviction-policy.md" >}}). +For more information, see [eviction policies](/content/operate/rs/databases/memory-performance/eviction-policy.md). ## Database persistence @@ -40,13 +40,13 @@ Append-only files (AoF) keep a record of data changes and writes each change to Snapshots capture all the data as it exists in one moment in time and writes it to disk, allowing you to recover the entire dataset as it existed at that moment in time. -For more info on data persistence see [Database persistence with Redis Software]({{< relref "/operate/rs/databases/configure/database-persistence.md" >}}) or [Durable Redis](https://redis.com/redis-enterprise/technology/durable-redis/). +For more info on data persistence see [Database persistence with Redis Software](/content/operate/rs/databases/configure/database-persistence.md) or [Durable Redis](https://redis.com/redis-enterprise/technology/durable-redis/). ## Auto Tiering -By default, Redis Software stores your data entirely in [RAM](https://en.wikipedia.org/wiki/Random-access_memory) for improved performance. [Redis Flex and Auto Tiering]({{< relref "/operate/rs/databases/flash/" >}}) enable your data to span both RAM and [SSD](https://en.wikipedia.org/wiki/Solid-state_drive) storage ([flash memory](https://en.wikipedia.org/wiki/Flash_memory)). Redis Flex tiers both keys and values to flash storage, ensuring that warm (infrequently accessed) data does not consume RAM. Auto Tiering stores keys in RAM but manages the location of their values. Frequently used (hot) data is stored in RAM, but infrequently used (warm) data is moved to flash memory. This saves on expensive RAM space, which gives you comparable performance at a lower cost for large datasets. +By default, Redis Software stores your data entirely in [RAM](https://en.wikipedia.org/wiki/Random-access_memory) for improved performance. [Redis Flex and Auto Tiering](/content/operate/rs/databases/flash/_index.md) enable your data to span both RAM and [SSD](https://en.wikipedia.org/wiki/Solid-state_drive) storage ([flash memory](https://en.wikipedia.org/wiki/Flash_memory)). Redis Flex tiers both keys and values to flash storage, ensuring that warm (infrequently accessed) data does not consume RAM. Auto Tiering stores keys in RAM but manages the location of their values. Frequently used (hot) data is stored in RAM, but infrequently used (warm) data is moved to flash memory. This saves on expensive RAM space, which gives you comparable performance at a lower cost for large datasets. -For more info, see [Redis Flex and Auto Tiering]({{< relref "/operate/rs/databases/flash/" >}}). +For more info, see [Redis Flex and Auto Tiering](/content/operate/rs/databases/flash/_index.md). ## Shard placement @@ -59,7 +59,7 @@ Redis Software has two shard placement policies available: - **dense**: puts as many shards as possible on the smallest number of nodes - **sparse**: spread the shards across as many nodes as possible -For more info about the shard placement policy, see [Shard placement policy]({{< relref "/operate/rs/databases/memory-performance/shard-placement-policy.md" >}}) +For more info about the shard placement policy, see [Shard placement policy](/content/operate/rs/databases/memory-performance/shard-placement-policy.md) ## Metrics @@ -67,7 +67,7 @@ From the Redis Software Cluster Manager UI, you can monitor the performance of y With the Redis Software API, you can also integrate Redis Software metrics into other monitoring environments, such as Prometheus. -For more info about monitoring with Redis Software, see [Monitoring with metrics and alerts]({{< relref "/operate/rs/monitoring" >}}), and [Memory statistics]({{< relref "/operate/rs/databases/memory-performance/memory-limit#memory-metrics" >}}). +For more info about monitoring with Redis Software, see [Monitoring with metrics and alerts](/content/operate/rs/monitoring/_index.md), and [Memory statistics](/content/operate/rs/databases/memory-performance/memory-limit.md#memory-metrics). ## Scaling databases @@ -108,6 +108,6 @@ accesses to the same value is fast, once the value is in RAM. ## Client-side caching -Client-side caching allows Redis clients to store a subset of data in a local cache and avoid sending repeated requests to the Redis database. When used to cache frequently accessed data, this technique can improve performance by decreasing network traffic, latency, and load on the database. For more information about client-side caching, see the [client-side caching introduction]({{}}). +Client-side caching allows Redis clients to store a subset of data in a local cache and avoid sending repeated requests to the Redis database. When used to cache frequently accessed data, this technique can improve performance by decreasing network traffic, latency, and load on the database. For more information about client-side caching, see the [client-side caching introduction](/content/develop/clients/client-side-caching.md). -Redis Software supports client-side caching for databases with Redis versions 7.4 and later. See [Client-side caching compatibility with Redis Software]({{}}) for more information about compatibility and configuration options. +Redis Software supports client-side caching for databases with Redis versions 7.4 and later. See [Client-side caching compatibility with Redis Software](/content/operate/rs/references/compatibility/client-side-caching.md) for more information about compatibility and configuration options. diff --git a/content/operate/rs/databases/memory-performance/eviction-policy.md b/content/operate/rs/databases/memory-performance/eviction-policy.md index 664100176d..5b52f58c4d 100644 --- a/content/operate/rs/databases/memory-performance/eviction-policy.md +++ b/content/operate/rs/databases/memory-performance/eviction-policy.md @@ -35,7 +35,7 @@ In clustered databases, each shard tracks its own memory usage and triggers evic `volatile-lru` is the default eviction policy for most databases. -The default policy for [Active-Active databases]({{< relref "/operate/rs/databases/active-active" >}}) is _noeviction_ policy. +The default policy for [Active-Active databases](/content/operate/rs/databases/active-active/_index.md) is _noeviction_ policy. ## Active-Active database eviction @@ -51,15 +51,14 @@ The eviction policy mechanism for Active-Active databases starts earlier than fo In case of network issues between Active-Active instances, memory can be freed only when all instances are in sync. If there is no communication between participating clusters, it can result in eviction of all keys and the instance reaching an out-of-memory state. -{{< note >}} -Data eviction policies are not supported for Active-Active databases with Auto Tiering. -{{< /note >}} +> [!NOTE] +> Data eviction policies are not supported for Active-Active databases with Auto Tiering. ## Avoid data eviction To avoid data eviction, make sure your database is large enough to hold required values. -For larger databases, consider using [Redis Flex or Auto Tiering ]({{< relref "/operate/rs/databases/flash/" >}}). +For larger databases, consider using [Redis Flex or Auto Tiering ](/content/operate/rs/databases/flash/_index.md). Auto Tiering stores actively-used data (also known as _hot data_) in RAM and the remaining data in flash memory (SSD). This lets you retain more data while ensuring the fastest access to the most critical data. diff --git a/content/operate/rs/databases/memory-performance/memory-limit.md b/content/operate/rs/databases/memory-performance/memory-limit.md index 3e9c6767f9..9a80acc305 100644 --- a/content/operate/rs/databases/memory-performance/memory-limit.md +++ b/content/operate/rs/databases/memory-performance/memory-limit.md @@ -25,25 +25,25 @@ Factors to consider when sizing your database: - **dataset size**: you want your limit to be above your dataset size to leave room for overhead. - **database throughput**: high throughput needs more shards, leading to a higher memory limit. -- [**modules**]({{< relref "/operate/oss_and_stack/stack-with-enterprise" >}}): using modules with your database consumes more memory. -- [**database clustering**]({{< relref "/operate/rs/databases/durability-ha/clustering.md" >}}): enables you to spread your data into shards across multiple nodes. -- [**database replication**]({{< relref "/operate/rs/databases/durability-ha/replication.md" >}}): enabling replication doubles memory consumption. +- [**modules**](/content/operate/oss_and_stack/stack-with-enterprise/_index.md): using modules with your database consumes more memory. +- [**database clustering**](/content/operate/rs/databases/durability-ha/clustering.md): enables you to spread your data into shards across multiple nodes. +- [**database replication**](/content/operate/rs/databases/durability-ha/replication.md): enabling replication doubles memory consumption. Additional factors for Active-Active databases: -- [**Active-Active replication**]({{< relref "/operate/rs/databases/active-active/_index.md" >}}): enabling Active-Active replication requires double the memory of regular replication, which can be up to two times (2x) the original data size per instance. -- [**database replication backlog**]({{< relref "/operate/rs/databases/active-active/manage#replication-backlog/" >}}) for synchronization between shards. By default, this is set to 1% of the database size. -- [**Active-Active replication backlog**]({{< relref "/operate/rs/databases/active-active/manage.md" >}}) for synchronization between clusters. By default, this is set to 1% of the database size. +- [**Active-Active replication**](/content/operate/rs/databases/active-active/_index.md): enabling Active-Active replication requires double the memory of regular replication, which can be up to two times (2x) the original data size per instance. +- [**database replication backlog**](/content/operate/rs/databases/active-active/manage.md#replication-backlog/) for synchronization between shards. By default, this is set to 1% of the database size. +- [**Active-Active replication backlog**](/content/operate/rs/databases/active-active/manage.md) for synchronization between clusters. By default, this is set to 1% of the database size. It's also important to know Active-Active databases have a lower threshold for activating the eviction policy, because it requires propagation to all participating clusters. The eviction policy starts to evict keys when one of the Active-Active instances reaches 80% of its memory limit. Additional factors for databases with flash enabled: -- For [Auto Tiering]({{}}), the available flash space must be greater than or equal to the total database size (RAM+Flash). The extra space accounts for write buffers and [write amplification](https://en.wikipedia.org/wiki/Write_amplification). +- For [Auto Tiering](/content/operate/rs/databases/flash/_index.md), the available flash space must be greater than or equal to the total database size (RAM+Flash). The extra space accounts for write buffers and [write amplification](https://en.wikipedia.org/wiki/Write_amplification). -- For [Flex]({{}}), flash space should be approximately three times the total memory limit of all Flex databases on the node. Because you can increase a database's memory limit after creation, size flash space for the expected peak memory limit. +- For [Flex](/content/operate/rs/flex/_index.md), flash space should be approximately three times the total memory limit of all Flex databases on the node. Because you can increase a database's memory limit after creation, size flash space for the expected peak memory limit. -- [**database persistence**]({{< relref "/operate/rs/databases/configure/database-persistence.md" >}}): Auto Tiering uses dual database persistence where both the primary and replica shards persist to disk. This may add some processor and network overhead, especially in cloud configurations with network attached storage. +- [**database persistence**](/content/operate/rs/databases/configure/database-persistence.md): Auto Tiering uses dual database persistence where both the primary and replica shards persist to disk. This may add some processor and network overhead, especially in cloud configurations with network attached storage. ## What happens when Redis Software is low on RAM? @@ -51,9 +51,9 @@ Redis Software manages node memory so that data is entirely in RAM (unless usin Redis Software protects the existing data and prevents the database from being able to store data into the shards. -You can configure the cluster to move the data to another node, or even discard it according to the [eviction policy]({{< relref "/operate/rs/databases/memory-performance/eviction-policy.md" >}}) set on each database by the administrator. +You can configure the cluster to move the data to another node, or even discard it according to the [eviction policy](/content/operate/rs/databases/memory-performance/eviction-policy.md) set on each database by the administrator. -[Redis Flex and Auto Tiering]({{< relref "/operate/rs/databases/flash/" >}}) +[Redis Flex and Auto Tiering](/content/operate/rs/databases/flash/_index.md) manage memory so that you can also use flash memory (SSD) to store data. ### Order of events for low RAM @@ -66,7 +66,7 @@ out of memory (OOM) messages. 4. If shards can't free memory, Redis Software relies on the OS processes to stop replicas, but tries to avoid stopping primary shards. -We recommend that you have a [monitoring platform]({{< relref "/operate/rs/monitoring/" >}}) that alerts you before a system gets low on RAM. +We recommend that you have a [monitoring platform](/content/operate/rs/monitoring/_index.md) that alerts you before a system gets low on RAM. You must maintain sufficient free memory to make sure that you have a healthy Redis Software installation. ### Active-Active replication OOM protection @@ -77,7 +77,7 @@ When a shard in an Active-Active database reaches an out-of-memory (OOM) conditi 1. The syncer process sends commands to the affected shard to trigger garbage collection and free memory. -If the database has no [eviction policy]({{}}) and no keys with [expiration times (TTL)]({{}}), no memory can be freed, which can lead to persistent replication failure and data desynchronization. +If the database has no [eviction policy](/content/operate/rs/databases/memory-performance/eviction-policy.md) and no keys with [expiration times (TTL)](/content/develop/using-commands/keyspace.md#key-expiration), no memory can be freed, which can lead to persistent replication failure and data desynchronization. To reduce this risk, Active-Active databases running Redis version 8.4 or later support a configurable memory buffer through the `replication_oom_threshold_percent` setting. This setting reserves a percentage of memory below `maxmemory` for internal replication operations. @@ -89,7 +89,7 @@ The `replication_oom_threshold_percent` setting works as follows: - If memory reaches `maxmemory` despite the client block, the standard out-of-memory behavior applies to all operations, including replication. -`replication_oom_threshold_percent` defaults to `5`, which means 5% of `maxmemory` is reserved. To adjust the reserved percentage in all participating clusters, use an [update Active-Active database configuration]({{}}) REST API request: +`replication_oom_threshold_percent` defaults to `5`, which means 5% of `maxmemory` is reserved. To adjust the reserved percentage in all participating clusters, use an [update Active-Active database configuration](/content/operate/rs/references/rest-api/requests/crdbs/_index.md#patch-crdbs) REST API request: ```sh PATCH https://:/v1/crdbs/ @@ -108,9 +108,9 @@ For example, when pushing data at approximately 100 MB/sec into a 2 GB database: - A database with 2 shards could reach 199% of its configured memory limit. - A database with 4 shards could reach around 220% of its configured memory limit. -Databases should return to their configured memory limits after data is removed according to the [eviction policy]({{}}) and [time-to-live (TTL)]({{}}). +Databases should return to their configured memory limits after data is removed according to the [eviction policy](/content/operate/rs/databases/memory-performance/eviction-policy.md) and [time-to-live (TTL)](/content/develop/using-commands/keyspace.md#key-expiration). -If you observe this behavior, consider [monitoring]({{< relref "/operate/rs/monitoring/" >}}) memory usage and controlling the traffic load on the application side. +If you observe this behavior, consider [monitoring](/content/operate/rs/monitoring/_index.md) memory usage and controlling the traffic load on the application side. ## Resharding duration factors @@ -126,9 +126,8 @@ Resharding follows a three-stage process for each new shard: When resharding multiple shards (for example, expanding from 4 to 8 shards), this process runs serially for each new shard. The operation completes only after all stages finish for every shard. -{{< note >}} -Resharding is an atomic operation that cannot be interrupted. Database corruption can occur if the process fails or stops unexpectedly. Minimizing resharding time reduces this risk. -{{< /note >}} +> [!NOTE] +> Resharding is an atomic operation that cannot be interrupted. Database corruption can occur if the process fails or stops unexpectedly. Minimizing resharding time reduces this risk. ### Resharding duration factors @@ -148,13 +147,13 @@ The Cluster Manager UI provides metrics that can help you evaluate your memory u - Memory usage - Memory limit -See [console metrics]({{< relref "/operate/rs/references/metrics" >}}) for more detailed information. +See [console metrics](/content/operate/rs/references/metrics/_index.md) for more detailed information. ## Related info -- [Memory and performance]({{< relref "/operate/rs/databases/memory-performance" >}}) -- [Disk sizing for heavy write scenarios]({{< relref "/operate/rs/clusters/optimize/disk-sizing-heavy-write-scenarios.md" >}}) -- [Turn off services to free system memory]({{< relref "/operate/rs/clusters/optimize/turn-off-services.md" >}}) -- [Eviction policy]({{< relref "/operate/rs/databases/memory-performance/eviction-policy.md" >}}) -- [Shard placement policy]({{< relref "/operate/rs/databases/memory-performance/shard-placement-policy.md" >}}) -- [Database persistence]({{< relref "/operate/rs/databases/configure/database-persistence.md" >}}) +- [Memory and performance](/content/operate/rs/databases/memory-performance/_index.md) +- [Disk sizing for heavy write scenarios](/content/operate/rs/clusters/optimize/disk-sizing-heavy-write-scenarios.md) +- [Turn off services to free system memory](/content/operate/rs/clusters/optimize/turn-off-services.md) +- [Eviction policy](/content/operate/rs/databases/memory-performance/eviction-policy.md) +- [Shard placement policy](/content/operate/rs/databases/memory-performance/shard-placement-policy.md) +- [Database persistence](/content/operate/rs/databases/configure/database-persistence.md) diff --git a/content/operate/rs/databases/memory-performance/shard-placement-policy.md b/content/operate/rs/databases/memory-performance/shard-placement-policy.md index c45a09cf5f..fdbf5c084f 100644 --- a/content/operate/rs/databases/memory-performance/shard-placement-policy.md +++ b/content/operate/rs/databases/memory-performance/shard-placement-policy.md @@ -51,4 +51,4 @@ For Redis on RAM databases with OSS cluster API enabled and for databases with A ## Related articles -You can [configure the shard placement policy]({{< relref "/operate/rs/databases/configure/shard-placement.md" >}}) for each database. +You can [configure the shard placement policy](/content/operate/rs/databases/configure/shard-placement.md) for each database. diff --git a/content/operate/rs/databases/migrate-shards.md b/content/operate/rs/databases/migrate-shards.md index 12469ffb99..537151c0e5 100644 --- a/content/operate/rs/databases/migrate-shards.md +++ b/content/operate/rs/databases/migrate-shards.md @@ -12,7 +12,7 @@ toc: 'true' weight: 32 --- -To migrate database shards to other nodes in the cluster, you can use the [`rladmin migrate`]({{}}) command or [REST API requests]({{}}). +To migrate database shards to other nodes in the cluster, you can use the [`rladmin migrate`](/content/operate/rs/references/cli-utilities/rladmin/migrate.md) command or [REST API requests](/content/operate/rs/references/rest-api/requests/shards/actions/migrate.md). ## Use cases for shard migration @@ -42,15 +42,15 @@ If too many primary shards are placed on the same node, it can impact database p To migrate a specific database shard, use one of the following methods: -- [`rladmin migrate shard`]({{}}): +- [`rladmin migrate shard`](/content/operate/rs/references/cli-utilities/rladmin/migrate.md#migrate-shard): ```sh rladmin migrate shard target_node ``` -- [Migrate shard]({{}}) REST API request: +- [Migrate shard](/content/operate/rs/references/rest-api/requests/shards/actions/migrate.md#post-shard) REST API request: - Specify the ID of the shard to migrate in the request path and the destination node's ID as the `target_node_uid` in the request body. See the [request reference]({{}}) for more options. + Specify the ID of the shard to migrate in the request path and the destination node's ID as the `target_node_uid` in the request body. See the [request reference](/content/operate/rs/references/rest-api/requests/shards/actions/migrate.md#post-request-body) for more options. ```sh POST /v1/shards//actions/migrate @@ -68,21 +68,21 @@ To migrate a specific database shard, use one of the following methods: } ``` - You can track the action's progress with a [`GET /v1/actions/`]({{}}) request. + You can track the action's progress with a [`GET /v1/actions/`](/content/operate/rs/references/rest-api/requests/actions/_index.md#get-action) request. ## Migrate multiple shards To migrate multiple database shards, use one of the following methods: -- [`rladmin migrate shard`]({{}}): +- [`rladmin migrate shard`](/content/operate/rs/references/cli-utilities/rladmin/migrate.md#migrate-shard): ```sh rladmin migrate shard target_node ``` -- [Migrate multiple shards]({{}}) REST API request: +- [Migrate multiple shards](/content/operate/rs/references/rest-api/requests/shards/actions/migrate.md#post-multi-shards) REST API request: - Specify the IDs of the shards to migrate in the `shard_uids` list and the destination node's ID as the `target_node_uid` in the request body. See the [request reference]({{}}) for more options. + Specify the IDs of the shards to migrate in the `shard_uids` list and the destination node's ID as the `target_node_uid` in the request body. See the [request reference](/content/operate/rs/references/rest-api/requests/shards/actions/migrate.md#post-multi-request-body) for more options. ```sh POST /v1/shards/actions/migrate @@ -101,11 +101,11 @@ To migrate multiple database shards, use one of the following methods: } ``` - You can track the action's progress with a [`GET /v1/actions/`]({{}}) request. + You can track the action's progress with a [`GET /v1/actions/`](/content/operate/rs/references/rest-api/requests/actions/_index.md#get-action) request. ## Migrate all shards from a node -To migrate all shards from a specific node to another node, run [`rladmin migrate all_shards`]({{}}): +To migrate all shards from a specific node to another node, run [`rladmin migrate all_shards`](/content/operate/rs/references/cli-utilities/rladmin/migrate.md#migrate-all_shards): ```sh rladmin migrate node all_shards target_node @@ -113,7 +113,7 @@ rladmin migrate node all_shards target_node ## Migrate primary shards -You can use the [`rladmin migrate all_master_shards`]({{}}) command to migrate all primary shards for a specific database or node to another node in the cluster. +You can use the [`rladmin migrate all_master_shards`](/content/operate/rs/references/cli-utilities/rladmin/migrate.md#migrate-all_master_shards) command to migrate all primary shards for a specific database or node to another node in the cluster. To migrate a specific database's primary shards: @@ -129,7 +129,7 @@ rladmin migrate node all_master_shards target_node ## Migrate replica shards -You can use the [`rladmin migrate all_slave_shards`]({{}}) command to migrate all replica shards for a specific database or node to another node in the cluster. +You can use the [`rladmin migrate all_slave_shards`](/content/operate/rs/references/cli-utilities/rladmin/migrate.md#migrate-all_slave_shards) command to migrate all replica shards for a specific database or node to another node in the cluster. To migrate a specific database's replica shards: diff --git a/content/operate/rs/databases/recover.md b/content/operate/rs/databases/recover.md index 0d4a4fd70a..5f6cf381e5 100644 --- a/content/operate/rs/databases/recover.md +++ b/content/operate/rs/databases/recover.md @@ -12,16 +12,16 @@ weight: 35 --- When a cluster fails or a database is corrupted, you must: -1. [Restore the cluster configuration]({{< relref "/operate/rs/clusters/cluster-recovery.md" >}}) from the CCS files +1. [Restore the cluster configuration](/content/operate/rs/clusters/cluster-recovery.md) from the CCS files 1. Recover the databases with their previous configuration and data To restore data to databases in the new cluster, you must restore the database persistence files (backup, AOF, or snapshot files) to the databases. -These files are stored in the [persistence storage location]({{< relref "/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage" >}}). +These files are stored in the [persistence storage location](/content/operate/rs/installing-upgrading/install/plan-deployment/persistent-ephemeral-storage.md). The database recovery process includes: -1. If the cluster failed, [recover the cluster]({{< relref "/operate/rs/clusters/cluster-recovery.md" >}}). +1. If the cluster failed, [recover the cluster](/content/operate/rs/clusters/cluster-recovery.md). 1. Identify recoverable databases. 1. Restore the database data. 1. Verify that the databases are active. @@ -30,7 +30,7 @@ The database recovery process includes: - Before you start database recovery, make sure that the cluster that hosts the database is healthy. In the case of a cluster failure, - you must [recover the cluster]({{< relref "/operate/rs/clusters/cluster-recovery.md" >}}) before you recover the databases. + you must [recover the cluster](/content/operate/rs/clusters/cluster-recovery.md) before you recover the databases. - We recommend that you allocate new persistent storage drives for the new cluster nodes. If you use the original storage drives, @@ -39,7 +39,7 @@ The database recovery process includes: ## Recover databases After you prepare the cluster that hosts the database, -you can run the recovery process from the [`rladmin`]({{< relref "/operate/rs/references/cli-utilities/rladmin" >}}) +you can run the recovery process from the [`rladmin`](/content/operate/rs/references/cli-utilities/rladmin/_index.md) command-line interface (CLI). To recover the database: @@ -47,14 +47,14 @@ To recover the database: 1. Mount the persistent storage drives with the recovery files to the new nodes. These drives must contain the cluster configuration backup files and database persistence files. - {{< note >}} -Make sure that the user `redislabs` has permissions to access the storage location -of the configuration and persistence files on each of the nodes. - {{< /note >}} + > [!NOTE] + > Make sure that the user `redislabs` has permissions to access the storage location + > of the configuration and persistence files on each of the nodes. + > If you use local persistent storage, place all of the recovery files on each of the cluster nodes. -1. To see which databases are recoverable, run [`rladmin recover list`]({{}}): +1. To see which databases are recoverable, run [`rladmin recover list`](/content/operate/rs/references/cli-utilities/rladmin/recover.md#recover-list): ```sh rladmin recover list @@ -70,7 +70,7 @@ of the configuration and persistence files on each of the nodes. If you cannot resolve the issues, contact [Redis support](https://redis.com/company/support/). -1. Recover the database using one of the following [`rladmin recover`]({{< relref "/operate/rs/references/cli-utilities/rladmin/recover" >}}) commands: +1. Recover the database using one of the following [`rladmin recover`](/content/operate/rs/references/cli-utilities/rladmin/recover.md) commands: - Recover all databases from the persistence files located in the persistent storage drives: @@ -98,16 +98,16 @@ of the configuration and persistence files on each of the nodes. rladmin recover db only_configuration ``` - {{< note >}} -- If persistence was not configured for the database, the database is restored empty. -- For Active-Active databases that still have live instances, we recommend that you recover the configuration for the failed instances and let the data update from the other instances. -- For Active-Active databases where all instances need to be recovered, we recommend you recover one instance with the data and only recover the configuration for the other instances. - The empty instances then update from the recovered data. -- If the persistence files of the databases from the old cluster are not stored in the persistent storage location of the new node, - you must first map the recovery path of each node to the location of the old persistence files. - To do this, run the `node recovery_path set` command in rladmin. - The persistence files for each database are located in the persistent storage path of the nodes from the old cluster, usually under `/var/opt/redislabs/persist/redis`. - {{< /note >}} + > [!NOTE] + > - If persistence was not configured for the database, the database is restored empty. + > - For Active-Active databases that still have live instances, we recommend that you recover the configuration for the failed instances and let the data update from the other instances. + > - For Active-Active databases where all instances need to be recovered, we recommend you recover one instance with the data and only recover the configuration for the other instances. + > The empty instances then update from the recovered data. + > - If the persistence files of the databases from the old cluster are not stored in the persistent storage location of the new node, + > you must first map the recovery path of each node to the location of the old persistence files. + > To do this, run the `node recovery_path set` command in rladmin. + > The persistence files for each database are located in the persistent storage path of the nodes from the old cluster, usually under `/var/opt/redislabs/persist/redis`. + > 1. To verify that the recovered databases are now active, run: @@ -127,7 +127,7 @@ To enable automatic recovery, use one of the following methods: tab1="rladmin" tab2="REST API" >}} -To enable automatic recovery using `rladmin`, run the [`rladmin tune cluster`]({{}}) command: +To enable automatic recovery using `rladmin`, run the [`rladmin tune cluster`](/content/operate/rs/references/cli-utilities/rladmin/tune.md#tune-cluster) command: ```sh rladmin tune cluster auto_recovery enabled @@ -135,7 +135,7 @@ rladmin tune cluster auto_recovery enabled -tab-sep- -To enable automatic recovery using the REST API, use an [update cluster policy]({{< relref "/operate/rs/references/rest-api/requests/cluster/policy#put-cluster-policy" >}}) request: +To enable automatic recovery using the REST API, use an [update cluster policy](/content/operate/rs/references/rest-api/requests/cluster/policy.md#put-cluster-policy) request: ```sh PUT /v1/cluster/policy @@ -159,4 +159,4 @@ PUT /v1/bdbs/ } ``` -You can also set `recovery_wait_time` when you [create a database]({{< relref "/operate/rs/references/rest-api/requests/bdbs#post-bdbs-v1" >}}) using the REST API. +You can also set `recovery_wait_time` when you [create a database](/content/operate/rs/references/rest-api/requests/bdbs/_index.md#post-bdbs-v1) using the REST API.