diff --git a/content/operate/rc/changelog/may-2024.md b/content/operate/rc/changelog/may-2024.md index e8a71f0f4..d4fc70172 100644 --- a/content/operate/rc/changelog/may-2024.md +++ b/content/operate/rc/changelog/may-2024.md @@ -42,7 +42,7 @@ For Redis Cloud Essentials, the plan size refers to the full memory limit, not t For Redis Cloud Pro, you define your dataset size when you create the database, and we calculate your total memory limit automatically based on the features you choose. -See [Dataset size]({{< relref "/operate/rc/databases/configuration/clustering#dataset-size" >}}) for more information. +See [Dataset size]({{< relref "/operate/rc/databases/configuration/sizing#dataset-size" >}}) for more information. ## Deprecations diff --git a/content/operate/rc/databases/configuration/clustering.md b/content/operate/rc/databases/configuration/clustering.md index ba2aea7e4..d9576c41f 100644 --- a/content/operate/rc/databases/configuration/clustering.md +++ b/content/operate/rc/databases/configuration/clustering.md @@ -165,44 +165,11 @@ their order to suit your application's requirements. - **PCRE_ANCHORED:** the pattern is constrained to match only at the start of the string which is being searched. -## Dataset size {#dataset-size} - -The dataset size of a database is a part of the full memory limit for the database. The memory limit represents the maximum amount of memory for the database, which includes data values, keys, module data, and overhead for specific features. High availability features, such as replication and Active-Active, increase memory consumption, so in those cases your dataset size and memory limit will be different. - -For Redis Cloud Essentials, the plan size refers to the full memory limit, not the dataset size. Both the total memory limit and dataset size are listed under **Database details** when you create an Essentials database. - -For Redis Cloud Pro, you define your dataset size when you create the database, and we calculate your total memory limit based on the features you choose. - -Here are some general guidelines: - -- Memory limit represents an upper limit. You cannot store more data than the memory limit. Depending on your other selections, available memory for data may be less than expected. - -- [Replication]({{< relref "/operate/rc/databases/configuration/high-availability" >}}) doubles memory consumption; that is, 512 MB of data requires at least 1 GB of memory limit when replication is enabled. This affects both Redis Cloud Pro and Redis Cloud Essentials. For example, if you subscribe to a 1 GB Essentials plan, Redis will allocate 512 MB for your dataset and the other 512 MB for replication. - -- [Active-Active]({{< relref "/operate/rc/databases/configuration/active-active-redis" >}}) also doubles memory consumption and the effect is cumulative with replication's impact. Since Active-Active requires replication to be turned on, the memory limit impact can be as large as four times (4x) the original data size. - -- [Advanced capabilities]({{< relref "/operate/rc/databases/configuration/advanced-capabilities" >}}) also consume memory. For search databases, consider index size when you size your database. - -Memory limits in Redis Cloud are subject to the same considerations as Redis Enterprise Software; to learn more, see [Database memory limits]({{< relref "/operate/rs/databases/memory-performance/memory-limit" >}}). - -## Throughput - -Throughput is the amount of operations a database can handle over a certain period of time. For Redis Cloud databases, throughput is defined in operations per second (ops/sec). - -For a Redis Cloud Pro subscription, you define throughput for a database when you create it. For a Redis Cloud Essentials subscription, your maximum throughput depends on your plan. - -We assume a typical workload that includes a different mix of commands and an average key and value size of 1KB. Therefore, your actual throughput may be higher or lower than the throughput you set when you create your database. The following properties can affect your database's throughput: -- **Command complexity**: O(N) and O(log(N)) commands will take more time than O(1) commands, and will affect throughput accordingly. -- **Key and value sizing**: If your database's keys and values are very large, your actual throughput may be lower than expected. If the keys and values are smaller than the typical workload, the actual throughput might be higher than expected. -- **Replication**: Using [multi-zone replication]({{< relref "/operate/rc/databases/configuration/high-availability" >}}) affects throughput as each write operation is executed asynchronously in each zone. -- **Security**: Some security options, such as [transport layer security]({{< relref "/operate/rc/security/database-security/tls-ssl" >}}), may affect throughput. -- **Number of client connections**: The number of client connections affects throughput. Increasing or decreasing the number of client connections can result in higher or lower throughput. - ## Cluster API {#oss-cluster-api} {{< embed-md "oss-cluster-api-intro.md" >}} -The Cluster API is only supported on Redis Cloud Pro databases. You can enable it in the Scalability section of the configuration screen. +The Cluster API is only supported on Redis Cloud Pro databases. You can enable it in the Performance section of the configuration screen. The Redis Cluster API is supported only when a database uses the [standard hashing policy](#standard-hashing-policy) and does not use Search and Query or Time Series advanced capabilities. diff --git a/content/operate/rc/databases/configuration/sizing.md b/content/operate/rc/databases/configuration/sizing.md new file mode 100644 index 000000000..f62ba578c --- /dev/null +++ b/content/operate/rc/databases/configuration/sizing.md @@ -0,0 +1,81 @@ +--- +Title: Size a Redis Cloud database +alwaysopen: false +categories: +- docs +- operate +- rc +description: Describes sizing considerations for your Redis Cloud database, including throughput and dataset size. +linkTitle: Sizing +weight: $weight +--- + +## Dataset size {#dataset-size} + +The dataset size of a database is a part of the full memory limit for the database. The memory limit represents the maximum amount of memory for the database, which includes data values, keys, module data, and overhead for specific features. High availability features, such as replication and Active-Active, increase memory consumption, so your dataset size and memory limit will be different. + +For Redis Cloud Essentials, the plan size refers to the full memory limit, not the dataset size. Both the total memory limit and dataset size are listed under **Database details** when you create an Essentials database. + +For Redis Cloud Pro, you define your dataset size when you create the database, and we calculate your total memory limit based on the features you choose. + +Here are some general guidelines: + +- Memory limit represents an upper limit. You cannot store more data than the memory limit. Depending on your other selections, available memory for data may be less than expected. + +- [Replication]({{< relref "/operate/rc/databases/configuration/high-availability" >}}) doubles memory consumption; that is, 512 MB of data requires at least 1 GB of memory limit when replication is enabled. This affects both Redis Cloud Pro and Redis Cloud Essentials. For example, if you subscribe to a 1 GB Essentials plan, Redis will allocate 512 MB for your dataset and the other 512 MB for replication. + +- [Active-Active]({{< relref "/operate/rc/databases/configuration/active-active-redis" >}}) also doubles memory consumption and the effect is cumulative with replication's impact. Since Active-Active requires replication to be turned on, the memory limit impact can be as large as four times (4x) the original data size. + +- [Advanced capabilities]({{< relref "/operate/rc/databases/configuration/advanced-capabilities" >}}) also consume memory. For search databases, consider index size when you size your database. See [Search and query sizing]({{< relref "/operate/rc/databases/configuration/advanced-capabilities#search-and-query-sizing" >}}) for more info. + +Memory limits in Redis Cloud are subject to the same considerations as Redis Enterprise Software; to learn more, see [Database memory limits]({{< relref "/operate/rs/databases/memory-performance/memory-limit" >}}). + +## Throughput + +Throughput is the number of operations a database can handle over a certain period of time. For Redis Cloud databases, throughput is defined in operations per second (ops/sec). + +For a Redis Cloud Pro subscription, you define throughput for a database when you create it. For a Redis Cloud Essentials subscription, your maximum throughput depends on your plan. + +We use this setting to guide the allocation of compute power and network bandwidth, ensuring your database can handle the expected workload. However, the throughput specified is not guaranteed - actual throughput may be higher or lower depending on your workload and database configuration. + +### Throughput factors and variability + +Some factors that can affect throughput include: +- **Request size**: Smaller requests (under 3KB) consume less network bandwidth and may result in more operations per second than requested, while larger requests may result in fewer operations per second. +- **Command complexity**: Simple commands, like `GET` and `SET`, are faster and require fewer resources, whereas more complex commands involve more processing time and can reduce throughput. See the [Command list]({{< relref "/commands" >}}) to see which commands are more complex than others. +- **Replication**: Using [multi-zone replication]({{< relref "/operate/rc/databases/configuration/high-availability" >}}) affects throughput as each write operation is executed asynchronously in each zone. +- **Security**: Some security options, such as [transport layer security]({{< relref "/operate/rc/security/database-security/tls-ssl" >}}), may affect throughput. +- **Number of client connections**: The number of client connections affects throughput. Increasing or decreasing the number of client connections can result in higher or lower throughput. + +### Optimize throughput + +Here are some things to keep in mind for optimizing throughput: +- Optimize capacity planning and sizing of your Redis Cloud databases to meet your app performance requirements. +- Benchmark your app to understand what latency expectations are required, and adjust throughput accordingly. +- Test and monitor your app's performance and adjust the set ops/sec based on how if performs in real-world conditions. +- If your average request size is larger than 3KB, consider setting your throughput higher than expected. +- Track the slow logs using the [`SLOWLOG` command]({{< relref "/commands/slowlog" >}}) or the **Slowlog** tab on the [database screen]({{< relref "/operate/rc/databases/view-edit-database" >}}). +- Use [pipelining]({{< relref "/develop/use/pipelining" >}}) and [concurrent connections]({{< relref "/develop/reference/clients" >}}) effectively to optimize throughput and latency. +- Search databases have their own throughput requirements. See [Search and query sizing]({{< relref "/operate/rc/databases/configuration/advanced-capabilities#search-and-query-sizing" >}}) for more info. + +### Frequently asked questions + +**Can my workload exceed the configured throughput?** + +Yes, many workloads perform better than expected, especially with optimized configurations and ideal conditions. + +**Why is my application getting less throughput than what I set?** + +Factors like high connection counts, complex commands, large payloads, and network limitations can affect throughput. Test and adjust based on your application’s needs. + +**How do I know the optimal throughput for my application?** + +Start with the expected ops/sec. Most of the time, it’s more than enough. For an average request size of less than 3KB, we suggest specifying lower ops/sec than expected to reduce costs. For request sizes higher than 3 KB, we suggest specifying higher ops/sec than your target. Benchmarking your application under production-like conditions will help you find the best configuration. + +**How does network bandwidth impact throughput?** + +Insufficient bandwidth can bottleneck performance, especially with large request sizes. + +**What is the expected latency for my application?** + +Latency expectations vary by use case. Some applications tolerate milliseconds, while others require sub-millisecond performance. Benchmark your application to understand its latency profile. \ No newline at end of file diff --git a/content/operate/rc/databases/create-database/create-active-active-database.md b/content/operate/rc/databases/create-database/create-active-active-database.md index c6ffaf5c2..2b968b3f7 100644 --- a/content/operate/rc/databases/create-database/create-active-active-database.md +++ b/content/operate/rc/databases/create-database/create-active-active-database.md @@ -189,7 +189,7 @@ Use the **Database list** to check the status of your databases. - [Create a Pro database with a new subscription]({{< relref "/operate/rc/databases/create-database/create-pro-database-new" >}}) - [Active-Active Redis]({{< relref "/operate/rc/databases/configuration/active-active-redis" >}}) - [Develop applications with Active-Active databases]({{< relref "/operate/rs/databases/active-active/develop/_index.md" >}}) -- Database [memory limit]({{< relref "/operate/rc/databases/configuration/clustering#dataset-size" >}}) +- Database [memory limit]({{< relref "/operate/rc/databases/configuration/sizing#dataset-size" >}}) - Redis Cloud [subscription plans]({{< relref "/operate/rc/subscriptions/" >}}) - [Redis Cloud pricing](https://redis.io/pricing/#monthly) diff --git a/content/operate/rc/databases/create-database/create-pro-database-existing.md b/content/operate/rc/databases/create-database/create-pro-database-existing.md index 1c31d24d2..f4447f8c8 100644 --- a/content/operate/rc/databases/create-database/create-pro-database-existing.md +++ b/content/operate/rc/databases/create-database/create-pro-database-existing.md @@ -55,16 +55,16 @@ The available settings vary according to your subscription plan: | **Query performance factor** | *(Search and query databases on Redis 7.2 or later only)* Adds additional compute power to process your query and vector search workloads and boost your queries per second. See [Search and query sizing]({{< relref "/operate/rc/databases/configuration/advanced-capabilities#search-and-query-sizing" >}}) for more information. | | **Supported Protocol(s)** | Choose between RESP2 and RESP3 _(Redis 7.2 only)_. See [Redis serialization protocol]({{< relref "/develop/reference/protocol-spec" >}}#resp-versions) for details | -## Scalability section +## Performance section -The **Scalability** section lets you manage the maximum size, throughput, and hashing policy for a database. +The **Performance** section lets you manage the maximum size, throughput, and hashing policy for a database. -{{Use the Scalability section to control the size, throughput, and hashing policy for a database.}} +{{Use the Performance section to control the size, throughput, and hashing policy for a database.}} | Setting name | Description | |:--------------------|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| **Dataset size** | Maximum size (in GB) for your dataset. See [Dataset size]({{< relref "/operate/rc/databases/configuration/clustering#dataset-size" >}}) for sizing considerations.
Databases with Search and query have specific size requirements, see [Search and query sizing]({{< relref "/operate/rc/databases/configuration/advanced-capabilities#search-and-query-sizing" >}}) for more information. | -| **Throughput** | Defines throughput in terms of maximum operations per second for the database. See [Throughput]({{< relref "/operate/rc/databases/configuration/clustering#throughput" >}}) for more info.
Databases with Search and query have specific throughput requirements, see [Search and query sizing]({{< relref "/operate/rc/databases/configuration/advanced-capabilities#search-and-query-sizing" >}}) for more information. | +| **Dataset size** | Maximum size (in GB) for your dataset. See [Dataset size]({{< relref "/operate/rc/databases/configuration/sizing#dataset-size" >}}) for sizing considerations.
Databases with Search and query have specific size requirements, see [Search and query sizing]({{< relref "/operate/rc/databases/configuration/advanced-capabilities#search-and-query-sizing" >}}) for more information. | +| **Throughput** | Defines throughput in terms of maximum operations per second for the database. See [Throughput]({{< relref "/operate/rc/databases/configuration/sizing#throughput" >}}) for more info.
Databases with Search and query have specific throughput requirements, see [Search and query sizing]({{< relref "/operate/rc/databases/configuration/advanced-capabilities#search-and-query-sizing" >}}) for more information. | | **High availability** | Replicates your data across multiple nodes, as allowed by your subscription plan. See [High availability]({{< relref "/operate/rc/databases/configuration/high-availability" >}}) for more info| | **Hashing policy** | Defines the [hashing policy]({{< relref "/operate/rc/databases/configuration/clustering#manage-the-hashing-policy" >}}). | | **OSS Cluster API** | Enables the [Cluster API]({{< relref "/operate/rc/databases/configuration/clustering#oss-cluster-api" >}}) for a database

When this option is enabled, you cannot define a custom hashing policy. | diff --git a/content/operate/rc/databases/create-database/create-pro-database-new.md b/content/operate/rc/databases/create-database/create-pro-database-new.md index f3995c233..9ba01bd10 100644 --- a/content/operate/rc/databases/create-database/create-pro-database-new.md +++ b/content/operate/rc/databases/create-database/create-pro-database-new.md @@ -54,7 +54,7 @@ If you choose to create your database with Easy create: | Database setting | Description | |:---------|:-----------| | **Dataset size (GB)** | The amount of data for your dataset. Specify small sizes as decimals of 1.0 GB; example: `0.1` GB (minimum). We calculate the total memory limit for you based on the other settings you choose for your database.
Databases with Search and query have specific sizing requirements, see [Search and query sizing]({{< relref "/operate/rc/databases/configuration/advanced-capabilities#search-and-query-sizing" >}}) for more information. | - | **Throughput** | Identifies maximum throughput for the database, which is specified in terms of operations per second (**Ops/sec**). See [Throughput]({{< relref "/operate/rc/databases/configuration/clustering#throughput" >}}) for more information.
Databases with Search and query have specific throughput requirements, see [Search and query sizing]({{< relref "/operate/rc/databases/configuration/advanced-capabilities#search-and-query-sizing" >}}) for more information. | + | **Throughput** | Identifies maximum throughput for the database, which is specified in terms of operations per second (**Ops/sec**). See [Throughput]({{< relref "/operate/rc/databases/configuration/sizing#throughput" >}}) for more information.
Databases with Search and query have specific throughput requirements, see [Search and query sizing]({{< relref "/operate/rc/databases/configuration/advanced-capabilities#search-and-query-sizing" >}}) for more information. | | **High Availability** | Indicates whether a replica copy of the database is maintained in case the primary database becomes unavailable. (Warning: doubles memory consumption). See [High Availability]({{< relref "/operate/rc/databases/configuration/high-availability" >}}). | 1. Select **View all settings** to review the database settings that we selected for you based on your use case. diff --git a/content/operate/rc/databases/view-edit-database.md b/content/operate/rc/databases/view-edit-database.md index 87f342417..883c21e0f 100644 --- a/content/operate/rc/databases/view-edit-database.md +++ b/content/operate/rc/databases/view-edit-database.md @@ -56,24 +56,22 @@ The available settings vary according to your plan, cloud provider, and design c | **Supported Protocol(s)** | Shows which version of RESP the database uses. See [Redis serialization protocol]({{< relref "/develop/reference/protocol-spec" >}}#resp-versions) for details | | **Advanced Capabilites** | This setting appears when an [advanced capability]({{< relref "/operate/rc/databases/configuration/advanced-capabilities" >}}) is enabled for a database | -### Scalability section +### Performance section -The **Scalability** section describes the memory size, throughput, and hashing policy for a database. +The **Performance** section describes the memory size, throughput, and hashing policy for a database. -{{Use the Scalability section to control the size, throughput, and hashing policy for a database.}} - -The **Scalability** section is primarily for Redis Cloud Pro plans. Redis Cloud Essentials plans have options for memory limit and memory used. +{{Use the Performance section to control the size, throughput, and hashing policy for a database.}} | Setting name |Description| |:----------------------|:----------| -| **Dataset size** | Maximum size (in GB) for your dataset. | +| **Dataset size** | Maximum size (in GB) for your dataset. See [Dataset size]({{< relref "/operate/rc/databases/configuration/sizing#dataset-size" >}}). | +| **Throughput** | Defines [throughput]({{< relref "/operate/rc/databases/configuration/sizing#throughput" >}}) in terms of maximum operations per second for the database (_Redis Cloud Pro only_). | | **Memory used** | Memory currently used for your database. | -| **Throughput** | Defines throughput in terms of maximum operations per second for the database | | **High availability** | Replicates your data across multiple nodes; [available options]({{< relref "/operate/rc/databases/configuration/high-availability" >}}) depend on your plan type | -| **Hashing policy** | Defines the [hashing policy]({{< relref "/operate/rc/databases/configuration/clustering#manage-the-hashing-policy" >}}). | -| **OSS Cluster API** | Enables the [Cluster API]({{< relref "/operate/rc/databases/create-database#oss-cluster-api" >}}) for a database.

When this option is enabled, you cannot define a custom hashing policy.| +| **Hashing policy** | Defines the [hashing policy]({{< relref "/operate/rc/databases/configuration/clustering#manage-the-hashing-policy" >}}) (_Redis Cloud Pro only_). | +| **OSS Cluster API** | Enables the [Cluster API]({{< relref "/operate/rc/databases/configuration/clustering#oss-cluster-api" >}}) for a database (_Redis Cloud Pro only_).

When this option is enabled, you cannot define a custom hashing policy.| -To learn more about these settings and when to use them, see [Database clustering]({{< relref "/operate/rc/databases/configuration/clustering" >}}). +To learn more about these settings and when to use them, see [Sizing]({{< relref "/operate/rc/databases/configuration/sizing" >}}) and [Database clustering]({{< relref "/operate/rc/databases/configuration/clustering" >}}). ### Durability section @@ -200,12 +198,12 @@ Here's what you can change: | General | Database name || | | Supported protocol(s) || | | Tags || -| Scalability | Memory limit | | +| Performance | Dataset size | | +| | High-availability | _Paid plans only_ | | | Throughput | _Pro plans only_ | | | Hashing policy | _Pro plans only_ | | | OSS Cluster API | _Pro plans only_ | -| Durability | High-availability | _Paid plans only_ | -| | Data persistence | _Paid plans only_ | +| Durability | Data persistence | _Paid plans only_ | | | Data eviction policy | | | | Remote backup | _Paid plans only_ | | | Active-Passive Redis | _Pro plans only_ | diff --git a/static/images/rc/database-details-configuration-tab-scalability-flexible.png b/static/images/rc/database-details-configuration-tab-scalability-flexible.png index c68440153..b711e337d 100644 Binary files a/static/images/rc/database-details-configuration-tab-scalability-flexible.png and b/static/images/rc/database-details-configuration-tab-scalability-flexible.png differ diff --git a/static/images/rc/database-new-flexible-scalability.png b/static/images/rc/database-new-flexible-scalability.png index 659590dde..d1d83f3f2 100644 Binary files a/static/images/rc/database-new-flexible-scalability.png and b/static/images/rc/database-new-flexible-scalability.png differ