如果在
中有多个连接ConnectionMultiplexer.Connect(host1, host2, etc.)
和
StackExchange.ConnectionMultiplexer.GetServer(...)
需要1个端点来获得服务器-如何理解这一点?这怎么说得通呢?
无论你如何连接,在幕后多路复用器可能有多个redis服务器实例的知识。通常,服务器拓扑是一个实现细节,对消费者来说没有用处或必要——这就是为什么在GetDatabase()
下公开的api不需要它的原因;库将担心如何将命令路由到服务器。
然而,有时消费者希望使用特定于单个服务器端点的API;这就是GetServer()
发挥作用的地方。例如,这可能是读取(或更改)单个服务器配置(尽管存在其他api)。在这种情况下,显然需要告诉库要与对话的节点,这就是为什么这是GetServer()
的必需参数。注意,您可以使用GetEndPoints()
API列出正在运行的端点(这是而不是)。必须与您在Connect[Async]
中提供的端点相同-例如,redis集群通过redis命令声明拓扑,通常是额外的节点)。
如果你不确定你将传递给GetServer(...)
的端点,那么有一个很好的机会,你不应该使用GetServer(...)
-我的意思是:你所追求的功能是可能暴露在GetDatabase(...)
上,而不需要指定端点。
或者更简单:
GetDatabase(...)
暴露了在redis 中构建的逻辑数据库GetServer(...)
暴露了提供该数据库的redis服务器的底层基础设施