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