Skip to content

Commit fe177b1

Browse files
Merge pull request #275983 from flang-msft/MSFTeegarden-patch-64-274566
fxl---Msfteegarden patch-64-pr-274566
2 parents b590139 + 74b03e9 commit fe177b1

File tree

4 files changed

+71
-29
lines changed

4 files changed

+71
-29
lines changed

articles/azure-cache-for-redis/cache-best-practices-enterprise-tiers.md

Lines changed: 32 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
---
22
title: Best practices for the Enterprise tiers
33
titleSuffix: Azure Cache for Redis
4-
description: Learn the best practices when using the high performance Azure Cache for Redis Enterprise and Enterprise Flash tiers
4+
description: Learn the best practices when using the high performance Azure Cache for Redis Enterprise and Enterprise Flash tiers.
55
author: flang-msft
66
ms.service: cache
77
ms.topic: conceptual
8-
ms.date: 09/26/2023
8+
ms.date: 06/10/2024
99
ms.author: franlanglois
1010
---
1111

@@ -29,22 +29,30 @@ Conversely, the opposite recommendation is true for the Basic, Standard, and Pre
2929

3030
## Sharding and CPU utilization
3131

32-
In the Basic, Standard, and Premium tiers of Azure Cache for Redis, determining the number of virtual CPUs (vCPUs) utilized is straightforward. Each Redis node runs on a dedicated VM. The Redis server process is single-threaded, utilizing one vCPU on each primary and each replica node. The other vCPUs on the VM are still used for other activities, such as workflow coordination for different tasks, health monitoring, and TLS load, among others.
32+
In the Basic, Standard, and Premium tiers of Azure Cache for Redis, determining the number of virtual CPUs (vCPUs) utilized is straightforward. Each Redis node runs on a dedicated virtual machine (VM). The Redis server process is single-threaded, utilizing one vCPU on each primary and each replica node. The other vCPUs on the VM are still used for other activities, such as workflow coordination for different tasks, health monitoring, and TLS load, among others.
3333

3434
When you use clustering, the effect is to spread data across more nodes with one shard per node. By increasing the number of shards, you linearly increase the number of vCPUs you use, based on the number of shards in the cluster.
3535

3636
Redis Enterprise, on the other hand, can use multiple vCPUs for the Redis instance itself. In other words, all tiers of Azure Cache for Redis can use multiple vCPUs for background and monitoring tasks, but only the Enterprise and Enterprise Flash tiers are able to utilize multiple vCPUs per VM for Redis shards. The table shows the number of effective vCPUs used for each SKU and capacity (that is, scale-out) configuration.
3737

3838
The tables show the number of vCPUs used for the primary shards, not the replica shards. Shards don't map one-to-one to the number of vCPUs. The tables only illustrate vCPUs, not shards. Some configurations use more shards than available vCPUs to boost performance in some usage scenarios.
3939

40+
### E1 (preview)
41+
42+
|Capacity|Effective vCPUs|
43+
|---:|---:|
44+
| 2 | 1 (burstable) |
45+
4046
### E5
47+
4148
|Capacity|Effective vCPUs|
4249
|---:|---:|
4350
| 2 | 1 |
4451
| 4 | 2 |
4552
| 6 | 6 |
4653

4754
### E10
55+
4856
|Capacity|Effective vCPUs|
4957
|---:|---:|
5058
| 2 | 2 |
@@ -84,6 +92,7 @@ The tables show the number of vCPUs used for the primary shards, not the replica
8492
|10|30|
8593

8694
### E200
95+
8796
|Capacity|Effective vCPUs|
8897
|---:|---:|
8998
|2|30|
@@ -93,6 +102,7 @@ The tables show the number of vCPUs used for the primary shards, not the replica
93102
|10|120|
94103

95104
### E400
105+
96106
|Capacity|Effective vCPUs|
97107
|---:|---:|
98108
|2|60|
@@ -140,24 +150,30 @@ You might also see `CROSSSLOT` errors with Enterprise clustering policy. Only th
140150
In Active-Active databases, multi-key write commands (`DEL`, `MSET`, `UNLINK`) can only be run on keys that are in the same slot. However, the following multi-key commands are allowed across slots in Active-Active databases: `MGET`, `EXISTS`, and `TOUCH`. For more information, see [Database clustering](https://docs.redis.com/latest/rs/databases/durability-ha/clustering/#multikey-operations).
141151

142152
## Enterprise Flash Best Practices
143-
The Enterprise Flash tier utilizes both NVMe Flash storage and RAM. Because Flash storage is lower cost, using the Enterprise Flash tier allows you to trade off some performance for price efficiency.
144153

145-
On Enterprise Flash instances, 20% of the cache space is on RAM, while the other 80% uses Flash storage. All of the _keys_ are stored on RAM, while the _values_ can be stored either in Flash storage or RAM. The location of the values is determined intelligently by the Redis software. "Hot" values that are accessed fequently are stored on RAM, while "Cold" values that are less commonly used are kept on Flash. Before data is read or written, it must be moved to RAM, becoming "Hot" data.
154+
The Enterprise Flash tier utilizes both NVMe Flash storage and RAM. Because Flash storage is lower cost, using the Enterprise Flash tier allows you to trade off some performance for price efficiency.
146155

147-
Because Redis will optmize for the best performance, the instance will first fill up the available RAM before adding items to Flash storage. This has a few implications for performance:
148-
- When testing with low memory usage, performance and latency may be significantly better than with a full cache instance because only RAM is being used.
149-
- As you write more data to the cache, the proportion of data in RAM compared to Flash storage will decrease, typically causing latency and throughput performance to decrease as well.
156+
On Enterprise Flash instances, 20% of the cache space is on RAM, while the other 80% uses Flash storage. All of the _keys_ are stored on RAM, while the _values_ can be stored either in Flash storage or RAM. The Redis software intelligently determines the location of the values. _Hot_ values that are accessed frequently are stored on RAM, while _Cold_ values that are less commonly used are kept on Flash. Before data is read or written, it must be moved to RAM, becoming _Hot_ data.
157+
158+
Because Redis optimizes for the best performance, the instance first fills up the available RAM before adding items to Flash storage. Filling RAM first has a few implications for performance:
159+
160+
- Better performance and lower latency can occur when testing with low memory usage. Testing with a full cache instance can yield lower performance because only RAM is being used in the low memory usage testing phase.
161+
- As you write more data to the cache, the proportion of data in RAM compared to Flash storage decreases, typically causing latency and throughput performance to decrease as well.
150162

151163
### Workloads well-suited for the Enterprise Flash tier
164+
152165
Workloads that are likely to run well on the Enterprise Flash tier often have the following characteristics:
166+
153167
- Read heavy, with a high ratio of read commands to write commands.
154-
- Access is focused on a subset of keys which are used much more frequently than the rest of the dataset.
155-
- Relatively large values in comparison to key names. (Since key names are always stored in RAM, this can become a bottleneck for memory growth.)
168+
- Access is focused on a subset of keys that are used much more frequently than the rest of the dataset.
169+
- Relatively large values in comparison to key names. (Because key names are always stored in RAM, large values can become a bottleneck for memory growth.)
170+
171+
### Workloads that aren't well-suited for the Enterprise Flash tier
156172

157-
### Workloads that are not well-suited for the Enterprise Flash tier
158173
Some workloads have access characteristics that are less optimized for the design of the Flash tier:
174+
159175
- Write heavy workloads.
160-
- Random or uniform data access paterns across most of the dataset.
176+
- Random or uniform data access patterns across most of the dataset.
161177
- Long key names with relatively small value sizes.
162178

163179
## Handling Region Down Scenarios with Active Geo-Replication
@@ -179,6 +195,10 @@ The [data persistence](cache-how-to-premium-persistence.md) feature in the Enter
179195

180196
Many customers want to use persistence to take periodic backups of the data on their cache. We don't recommend that you use data persistence in this way. Instead, use the [import/export](cache-how-to-import-export-data.md) feature. You can export copies of cache data in RDB format directly into your chosen storage account and trigger the data export as frequently as you require. Export can be triggered either from the portal or by using the CLI, PowerShell, or SDK tools.
181197

198+
## E1 (preview) SKU Limitations
199+
200+
The E1 (preview) SKU is intended for dev/test scenarios, primarily. E1 runs on smaller [burstable VMs](../virtual-machines/b-series-cpu-credit-model/b-series-cpu-credit-model.md). Burstable VMs offer variable performance based on how much CPU is consumed. Unlike other Enterprise SKU offerings, you can't _scale out_ the E1 SKU, although it's still possible to _scale up_ to a larger SKU. The E1 SKU also doesn't support [active geo-replication](cache-how-to-active-geo-replication.md).
201+
182202
## Related content
183203

184204
- [Development](cache-best-practices-development.md)

articles/azure-cache-for-redis/cache-how-to-active-geo-replication.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ The Premium tier of Azure Cache for Redis offers a version of geo-replication ca
3131
## Active geo-replication prerequisites
3232

3333
There are a few restrictions when using active geo replication:
34+
3435
- Only the [RediSearch](cache-redis-modules.md#redisearch) and [RedisJSON](cache-redis-modules.md#redisjson) modules are supported
3536
- On the _Enterprise Flash_ tier, only the _No Eviction_ eviction policy can be used. All eviction policies are supported on the _Enterprise_ tier.
3637
- Data persistence isn't supported because active geo-replication provides a superior experience.
3738
- You can't add an existing (that is, running) cache to a geo-replication group. You can only add a cache to a geo-replication group when you create the cache.
38-
- All caches within a geo-replication group must have the same configuration. For example, all caches must have the same SKU, capacity, eviction policy, clustering policy, modules, and TLS setting.
39-
- You can't use the `FLUSHALL` and `FLUSHDB` Redis commands when using active geo-replication. Prohibiting the commands prevents unintended deletion of data. Use the [flush control plane operation](#flush-operation) instead.
39+
- All caches within a geo-replication group must have the same configuration. For example, all caches must have the same SKU, capacity, eviction policy, clustering policy, modules, and TLS setting.
40+
- You can't use the `FLUSHALL` and `FLUSHDB` Redis commands when using active geo-replication. Prohibiting the commands prevents unintended deletion of data. Use the [flush operation](#flush-operation) from the portal instead.
41+
- The E1 SKU does not support active geo-replication.
4042

4143
## Create or join an active geo-replication group
4244

@@ -136,16 +138,16 @@ As before, you need to list both _Cache1_ and _Cache2_ using the `-LinkedDatabas
136138

137139
## Flush operation
138140

139-
Due to the potential for inadvertent data loss, you can't use the `FLUSHALL` and `FLUSHDB` Redis commands with any cache instance residing in a geo-replication group. Instead, use the **Flush Cache(s)** button located at the top of the **Active geo-replication** working pane.
141+
Due to the potential for inadvertent data loss, you can't use the `FLUSHALL` and `FLUSHDB` Redis commands with any cache instance residing in a geo-replication group. Instead, use the **Flush Cache(s)** button located at the top of the **Active geo-replication** working pane.
140142

141143
:::image type="content" source="media/cache-how-to-active-geo-replication/cache-active-flush.png" alt-text="Screenshot showing Active geo-replication selected in the Resource menu and the Flush cache feature has a red box around it.":::
142144

143145
### Flush caches using Azure CLI or PowerShell
144146

145-
The Azure CLI and PowerShell can also be used to trigger a flush operation. For more information on using Azure CLI, see [az redisenterprise database flush](/cli/azure/redisenterprise#az-redisenterprise-database-flush). For more information on using PowerShell, see [Invoke-AzRedisEnterpriseCacheDatabaseFlush](/powershell/module/az.redisenterprisecache/invoke-azredisenterprisecachedatabaseflush).
147+
The Azure CLI and PowerShell can also be used to trigger a flush operation. For more information on using Azure CLI, see [az redisenterprise database flush](/cli/azure/redisenterprise#az-redisenterprise-database-flush). For more information on using PowerShell, see [Invoke-AzRedisEnterpriseCacheDatabaseFlush](/powershell/module/az.redisenterprisecache/invoke-azredisenterprisecachedatabaseflush).
146148

147149
> [!IMPORTANT]
148-
> Be careful when using the **Flush Caches** feature. Selecting the button removes all data from the current cache and from ALL linked caches in the geo-replication group.
150+
> Be careful when using the **Flush Caches** feature. Selecting the button removes all data from the current cache and from ALL linked caches in the geo-replication group.
149151
>
150152
151153
Manage access to the feature using [Azure role-based access control](../role-based-access-control/overview.md). Only authorized users should be given access to flush all caches.
@@ -154,7 +156,5 @@ Manage access to the feature using [Azure role-based access control](../role-bas
154156

155157
Learn more about Azure Cache for Redis features.
156158

157-
* [Azure Cache for Redis service tiers](cache-overview.md#service-tiers)
158-
* [High availability for Azure Cache for Redis](cache-high-availability.md)
159-
160-
159+
- [Azure Cache for Redis service tiers](cache-overview.md#service-tiers)
160+
- [High availability for Azure Cache for Redis](cache-high-availability.md)

0 commit comments

Comments
 (0)