Client与Redis Cluster的交互

Client's interaction with Redis Cluster

我已经开始探索 Redis 集群及其 C 客户端 (hiredis)。我一直无法找到有关客户端与 Redis 集群交互的很多信息。我在这方面有一些疑问:

Does the client make a connection with all the nodes?

是的,客户端至少与所有master保持连接。

Is there a coordinator node which proxies the client's request to the correct node?

不,没有。按照设计,redis 集群没有代理。 (旁白:有一些关于为 Redis 开发代理解决方案的讨论——但我不希望它很快发布。)

Does the client periodically get info about hash slot bindings?

当客户端启动时,它会建立哈希槽映射的缓存。然后,在运行时,如果一个插槽被迁移到另一个主服务器,redis 集群将 return 一个特定的错误,告诉客户端该插槽的新所有者。然后,客户端应缓存新所有者,并重试对新节点的请求。

由于这种设计,客户端通常对每个插槽及其所有者都有很好的缓存,并且开销很小。

which client connection parameters are configurable?

最重要的参数是连接到集群的服务器节点列表。您不必指定所有节点 - 客户端可以自动发现所有主节点。只要有一个节点处于活动状态,客户端就会发现所有其他节点。

除此之外,您还有连接超时参数、控制 TLS 的参数。