使用 Redis Cloud 开发高可用性和弹性应用程序
设置您的Redis Cloud数据库,以实现稳定且高度可用的应用程序。
您可以设置您的Redis Cloud数据库和Redis客户端库,以确保您的应用程序在意外故障转移事件或网络中断后重新连接到您的数据库,并尽量减少数据丢失。
设置数据库
这些设置可以在创建或编辑数据库时启用。
启用数据持久化
启用数据持久化允许Redis将您的数据保存到持久存储介质(如磁盘)上,以确保在内存丢失或系统故障时数据的可用性。
Redis Cloud 支持以下数据持久化选项:
-
一个仅追加文件维护了写操作的记录。这使您可以通过使用记录来重建数据库,直到故障点,从而恢复数据。仅追加文件在每次写入或每秒更新。
-
快照是内存数据库的副本,定期(一小时、六小时或十二小时)拍摄。您可以将数据恢复到快照的时间点。
仅追加文件提供了比快照更大的保护,但代价是资源和恢复时间。尽管快照恢复更快,但数据丢失的风险更高,这取决于故障发生时间和最近快照之间的时间间隔。
如果不启用数据持久化,数据库宕机时可能会丢失数据。最佳实践是为所有生产数据库启用数据持久化。您可以在创建或编辑数据库时开启数据持久化。
启用复制
Database replication 允许自动故障转移和更高的容错能力。复制可以防止在硬件或区域故障时数据丢失。
Redis Cloud 支持这些复制设置:
- 无复制:您将在一个区域中拥有数据库的单一副本。如果数据库发生任何问题,您的应用程序将无法连接到它。
- 单区域: 您的数据库将有一个主数据集和一个位于同一云区域的副本数据集。如果主数据库发生任何问题,副本将接管并成为新的主数据库。您的应用程序将自动连接到新的主数据库,使用相同的端点。
- 多区域 (或多可用区): 主数据库及其副本存储在不同的可用区中。这意味着如果整个可用区不可用,您的应用程序将自动连接到新的主数据库区域。
您可以在创建数据库时启用复制。在创建数据库后,您可以在无复制和单区复制之间切换。但是,您不能从无复制或单区复制切换到多区复制。
对于任何需要高可用性的数据库,启用复制是最佳实践。
设置手动维护窗口
Redis 根据需要维护您的 Redis Cloud 订阅和数据库,以确保您的数据库运行最稳定和最新版本的 Redis。默认情况下,Redis 将自动执行维护,同时尽可能减少服务中断。
对于稳定的应用程序,您可能希望控制Redis何时可以对您的数据库进行维护。对于Redis Cloud Pro订阅,您可以设置手动维护窗口,以确保非紧急维护在设定的时间进行。配置或更改维护窗口不会对您的订阅或数据库产生任何影响。
Redis Cloud Essentials 数据库有一个基于其所在区域的维护窗口。有关更多信息,请参阅 Essentials 维护。
设置 Redis 客户端
在开发应用程序时,最好使用特定的Redis客户端功能来连接到Redis Cloud,如果这些功能适用于您首选的客户端。
查看Clients了解如何连接官方的Redis客户端。
重新尝试连接
一些客户端允许您在连接失败时重新尝试连接到数据库。对于这些客户端,我们建议您实施连接重试,以确保高可用性和连接稳定性。
查看您的客户文档以了解更多信息。
刷新DNS
您的应用程序可能会在计划维护期间或其他未计划的原因下与数据库断开连接。大多数Redis客户端在重新连接到数据库时会刷新其DNS地址,您无需执行任何进一步的操作。如果在维护期间遇到连接问题超过一分钟,则应刷新您的DNS条目。
根据客户端的不同,可能会建议您完全关闭DNS缓存。请参阅您的客户端文档以了解更多信息。
使用WAIT和WAITAOF命令
WAIT 和 WAITAOF 命令会阻塞当前客户端,直到所有之前的写命令在副本之间持久化。通过这些命令,您的应用程序可以确保已确认的写入在副本之间被记录。
更多信息,请参阅使用WAIT命令实现强一致性。