本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
耐久性选项
ElastiCache for Valkey 提供了两种耐久性选项:同步写入和异步写入。
通过同步写入,成功的写入操作在返回到客户端之前会 Multi-AZ 永久存储在事务日志中。这会产生个位数毫秒的写入延迟,并确保在出现故障时不会丢失已确认的写入操作。
使用异步写入时,成功的写入操作会返回给客户端,然后永久存储在 Multi-AZ 事务日志中。由于写入操作无需等待持久存储在 Multi-AZ 事务日志中,因此写入操作的延迟等同于 ElastiCache 没有持久性。但是,如果写入操作失败,则可能丢失最多 10 秒钟的成功写入操作。
要了解异步写入可能导致的数据丢失,请考虑耐久性缓冲区的概念。持久性缓冲区表示主节点已接受但尚未保留到 Multi-AZ 事务日志中的任何写入的最大期限。主节点跟踪未确认的最旧写入的时间。只要此时限保持在 10 秒以下,该节点就会继续正常接受新的写入。如果最早的未确认写入时间超过 10 秒,则主节点将拒绝所有传入的写入命令,直到它赶上。在此期间,读取操作继续以微秒延迟进行。待处理的写入保持不变后,该节点将自动恢复接受写入。这样可以确保在发生故障时将潜在的数据丢失限制在 10 秒以内的写入时间。
将您的客户端配置为向异步耐用集群发送流量时,请确保客户端自动使用指数退避重试任何被拒绝并显示集群关闭错误消息的写入命令。有关配置客户端以处理此错误和其他暂时性错误的指导,请参阅最佳实践: Valkey/Redis OSS 客户端和 Amazon ElastiCache
选择耐久性选项
当您的应用程序无法容忍故障期间出现任何数据丢失时,请使用同步写入。通过同步写入,除了缓存不可接受的数据丢失之外,您还可以 ElastiCache 用于更广泛的用例,例如 RAG 应用程序的知识库、AI 代理内存、AI 代理工作流程状态、支付令牌化、流媒体元数据、游戏玩家状态和实时库存管理。
如果您的应用程序优先考虑写入性能,并且可以承受在故障期间可能丢失长达 10 秒的未提交数据,则使用异步写入。此选项非常适合应用程序数据缓存、会话存储、游戏排行榜和实时分析等工作负载。