Redis
Redis 项目中提供了与 Redis 分区相关的全面参考。请参阅 ”Partitioning: how to split data among multiple Redis instances“。
Envoy Redis 的特点:
- 编解码器
- Ketama 一致性哈希算法
- 详细的命令统计
- 主动和被动的健康检查
有计划的未来增强功能:
- 额外的时间统计
- 对分散的命令进行请求折叠
- 复制
- 内置的重试功能
- 跟踪
有关过滤器配置的详细信息,请参阅 Redis 代理过滤器配置参考。
如果需要进行主动健康检查,则应该对集群配置使用 。
如果需要被动健康检查,还需要配置 异常检测。
为了进行被动健康检查,需要将连接超时,命令超时和连接关闭都映射到 5xx 响应,而来自 Redis 的所有其他响应都视为成功。
在协议层面,支持流水线,但不支持 MULTI(事务块)。应该尽可能的使用流水线以获得最佳性能。
有关每个命令用法的详细信息,请参阅官方的 。
如果 Redis 抛出了错误,我们会将这个错误作为响应传递给命令。Envoy 将来自 Redis 的响应与错误数据类型视为正常响应,并将它传递给调用者。
Envoy 也会产生自己的错误来响应客户端。
错误 | 含义 |
---|---|
没有上游主机 | 环哈希负载均衡器在为键的选择的位置上没有可用的主机 |
上游主机错误 | 后端没有在超时期限内进行响应或关闭连接 |
无效的请求 | 由于数据类型或长度的原因,命令在命令拆分器的第一阶段被拒绝 |
不支持的命令 | 该命令未被 Envoy 识别,因此不能被服务,因为它不能被哈希到后端的服务器 |
返回了多个错误 | 分段的命令将会组合多个响应(例如 DEL 命令),将返回接收到的错误总数 |
上游协议错误 | 分段命令收到意外的数据类型或后端响应的数据不符合 Redis 协议 |
命令参数数量错误 | Envoy 中的命令参数数量检查未通过 |
在 MGET 命令中,每个无法被获取的键都会产生一个错误响应。例如,如果我们获取五个键的指并且其中有两个键出现了后端响应超时的错误,我们将会获得每个值得错误响应信息。