本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
整体最佳实践
您可以在下面找到有关使用 Valkey、Memcached 和 Redis OSS 接口的最佳实践的信息。 ElastiCache
使用启用集群模式的配置 — 启用集群模式允许缓存水平扩展,以实现比禁用集群模式的配置更高的存储和吞吐量。 ElastiCache serverless 仅在启用集群模式的配置中可用。
使用长寿命连接 — 创建新连接的成本很高,而且需要缓存中的时间和CPU资源。尽可能重复使用连接(例如,使用连接池),以将此成本分摊到多条命令上。
从副本读取-如果您使用的是ElastiCache 无服务器或已配置只读副本(自行设计的集群),请直接读取副本以实现更好的可扩展性和/或更低的延迟。从副本中读取的数据最终与主节点是一致的。
在自行设计的集群中,避免将读取请求定向到单个只读副本,因为在节点出现故障时,可能暂时无法读取。将您的客户端配置为将读取请求定向到至少两个只读副本,或将读取定向到单个副本和主节点。
在 ElastiCache 无服务器中,从副本端口 (6380) 读取会尽可能将读取定向到客户端的本地可用区,从而减少检索延迟。在故障期间,它将自动回退到其他节点。
避免耗费大量资源的命令 – 避免运行任何计算型和输入/输出密集型操作,例如
KEYS
和SMEMBERS
命令。我们推荐此方法是因为这些操作可增加集群上的负载并能对集群的性能产生影响。改用SCAN
和SSCAN
命令。遵循 Lua 最佳实践 – 避免长时间运行 Lua 脚本并始终预先声明在 Lua 脚本中使用的密钥。我们建议使用此方法确定 Lua 脚本未使用跨槽命令。请确保 Lua 脚本中使用的密钥属于同一槽。
使用分片 pub/sub — 使用 Valkey 或 Redis OSS 支持高吞吐量的发布/订阅工作负载时,我们建议你使用分片 pub/sub(在 Valkey 和
Redis 7 或更高版本中可用)。OSS已启用集群模式的集群中的传统 pub/sub 会向集群中的所有节点广播消息,这可能会导致较高的 EngineCPUUtilization
。请注意,在 ElastiCache 无服务器的传统pub/sub commands internally use sharded pub/sub命令中。