Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
本文讨论如何为 Azure 托管 Redis 开发代码。
连接复原能力和服务器负载
开发客户端应用程序时,请考虑有关 连接复原 和管理 服务器负载的相关最佳做法。
考虑更多键和较小的值
使用较小的值时,Azure 托管 Redis 性能最佳。 若要将数据分散到多个键上,请考虑将较大的数据区块划分为较小的区块。 有关理想值大小的详细信息,请参阅 本文。
请求或响应大小过大
大型请求或响应可能会导致超时。 例如,假设将客户端上的超时值配置为 1 秒。 应用程序同时请求两个密钥(例如, A 和 B)(使用相同的物理网络连接)。 大多数客户端都支持请求 管道传送,其中请求 A 和 B 都相互发送,而无需等待其响应。 服务器会按相同顺序将响应发送回来。 如果响应 A 很大,它可能会耗掉后续请求的大部分超时时间。
在以下示例中,请求 A 并 B 快速发送到服务器。 服务器很快开始发送响应 A 和 B。 由于数据传输时间的影响,即使服务器很快作出响应,响应 B 也必须排在响应 A 超时之后等待。
|-------- 1 Second Timeout (A)----------|
|-Request A-|
|-------- 1 Second Timeout (B) ----------|
|-Request B-|
|- Read Response A --------|
|- Read Response B-| (**TIMEOUT**)
此请求和响应模式难以测量。 可对客户端代码进行检测,以跟踪大型请求和响应。
大型响应大小的解决方法有所不同,但包括:
- 优化应用程序以处理大量的小值,而不是处理少量的大值。
- 将数据分解成相关的较小值。
- 增加虚拟机(VM)的大小以获取更高的带宽功能。
- 提高客户端或服务器 VM 上的带宽可以缩短较大响应的数据传输时间。
- 将两台计算机上的网络用量与当前 VM 大小的限制进行比较。 只提高服务器上的带宽,或者只提高客户端上的带宽,都不足以解决问题。
- 增加应用程序使用的连接对象数。
- 使用轮询方法通过不同的连接对象发出请求。
使用管道
尝试选择支持 Redis 管道的 Redis 客户端。 管道有助于高效利用网络并尽可能获取最佳吞吐量。
避免高开销操作
某些 Redis 操作(如 KEYS 命令)成本高昂,应避免它们。 有关长时间运行命令的一些注意事项,请参阅长时间运行的命令。
选择适当的层级
Azure托管 Redis 提供内存优化层、均衡层、计算优化层和闪存优化层。 有关如何选择层的详细信息,请参阅 “如何缩放”。 测试性能以选择正确的层并验证连接设置。 有关更多信息,请参阅性能测试。
选择适当的可用性模式
Azure托管 Redis 提供启用或禁用高可用性配置的选项。 禁用高可用性模式时,AMR 实例中的数据不会复制,并且 Redis 实例在维护期间不可用。 AMR 实例中的所有数据在计划内或计划外维护期间都会丢失。 仅针对开发或测试工作负载禁用高可用性。 由于缺少数据复制,因此具有高可用性的 Redis 实例的性能也可能较低,这对于主要和副本数据分片之间分配负载至关重要。
客户端与 Redis 实例位于同一区域
将 Redis 实例和应用程序定位在同一区域中。 连接到不同区域中的 Redis 可能会明显增大延迟并降低可靠性。
虽然可以从Azure外部进行连接,但不建议这样做,尤其是在使用 Redis 加速应用程序或数据库性能时。 如果仅将 Redis 服务器用作键/值存储,那么延迟可能不是主要问题。
依赖主机名而不是公共 IP 地址
由于缩放操作或后端改进,分配给缓存的 IP 地址可能会更改。 依赖于主机名,而不是显式的公共或专用 IP 地址。 虚拟网络中缓存的已配置静态 IP 地址不是不可变的保证,尽管更改很少见,但在某些操作期间可能会更改。
Azure托管 Redis 中的主机名如下所示:<DNS name>.<Azure region>.redis.chinacloudapi.cn
使用 TLS 加密
Azure托管 Redis 默认需要 TLS 加密通信。 目前支持 TLS 版本 1.2 和 1.3。 如果客户端库或工具不支持 TLS,则可以启用未加密的连接。
监视内存使用情况、CPU 使用率指标、客户端连接和网络带宽
在生产环境中使用 Azure 托管 Redis 实例时,请为 Used Memory Percentage、CPU 指标和 Connected Clients 设置警报。 如果这些指标一直高于 75%,请考虑将实例缩放到更大的内存或更好的吞吐量层。 有关更多详细信息,请参阅 何时缩放。 有关如何报告内存以及如何规划容量的详细信息,请参阅 内存管理。
考虑启用数据持久性或数据备份
Redis 默认针对临时数据而设计,这意味着在极少数情况下,你的数据可能会因各种情况(例如维护或中断)而丢失。 如果应用程序对数据丢失很敏感,请使用数据导出操作启用数据持久性或定期数据备份。
数据 持久性 功能在缓存关闭时自动为数据提供快速恢复点。 之所以能够快速恢复,是因为该功能将 RDB 或 AOF 文件存储在装载到缓存实例的托管磁盘中。 用户无法访问磁盘上的持久性文件,其他 AMR 实例也无法使用这些文件。
许多客户希望使用持久化来定期备份其缓存中的数据。 请勿出于此目的使用数据暂留。 请使用导入/导出功能。 可以将 RDB 格式的数据副本直接导出到选择的存储帐户中,并根据需要随时触发数据导出。 可以从门户或使用 CLI、PowerShell 或 SDK 工具触发导出。
特定于客户端库的指南
有关详细信息,请参阅 Azure 托管 Redis 客户端库。