Redis 最佳实践 - ElastiCache 适用于 Redis 的 Amazon
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Redis 最佳实践

以下是使用 Redis 提高性能和可靠性时的最佳实践:

  • 使用已启用集群模式配置 – 已启用集群模式允许缓存水平扩展,从而实现比已禁用集群模式配置更大的存储和吞吐量。ElastiCache 无服务器仅在已启用集群模式配置中可用。

  • 使用长时间生存的连接 – 创建新连接的成本很高,而且需要花费时间和缓存中的 CPU 资源。尽可能重复使用连接(例如,使用连接池),以将此成本分摊到多条命令上。

  • 从副本读取 – 如果您使用的是 ElastiCache 无服务器或已配置只读副本(自行设计的集群),请直接读取副本来提高可扩展性和/或减少延迟。从副本中读取的数据最终与主节点是一致的。

    在自行设计的集群中,避免将读取请求定向到单个只读副本,因为在节点出现故障时,可能暂时无法读取。将您的客户端配置为将读取请求定向到至少两个只读副本,或将读取定向到单个副本和主节点。

    在 ElastiCache 无服务器中,从副本端口(6380)进行读取会尽可能将读取定向到客户端的本地可用区,从而减少检索延迟。在故障期间,它将自动回退到其他节点。

  • 避免耗费大量资源的命令 – 避免运行任何计算型和输入/输出密集型操作,例如 KEYSSMEMBERS 命令。我们推荐此方法是因为这些操作可增加集群上的负载并能对集群的性能产生影响。改用 SCANSSCAN 命令。

  • 遵循 Lua 最佳实践 – 避免长时间运行 Lua 脚本并始终预先声明在 Lua 脚本中使用的密钥。我们建议使用此方法确定 Lua 脚本未使用跨槽命令。请确保 Lua 脚本中使用的密钥属于同一槽。

  • 使用分片 pub/sub – 在使用 Redis 支持具有高吞吐量的 pub/sub 工作负载时,建议您使用分片 pub/sub(在 Redis 7 或更高版本中可用)。已启用集群模式的集群中的传统 pub/sub 会向集群中的所有节点广播消息,这可能会导致较高的 EngineCPUUtilization。请注意,在 ElastiCache 无服务器中,传统的 pub/sub 命令会在内部使用分片 pub/sub 命令。