我正在设置一个简单的1主-N从Redis集群(写入较少,读取次数较高)。在Redis网站上已经有关于如何设置它的详细文档,但是没有任何关于客户端(在我这种情况下是Node.js服务器)如何处理集群的信息(或者我已经错过了)。我的服务器需要打开2个Redis连接吗:一个用于Master(写入),另一个连接到读取负载均衡器的Slave?Redis驱动程序是否会自动处理并将读取发送至从节点,将写入发送至Master?
我正在设置一个简单的1主-N从Redis集群(写入较少,读取次数较高)。在Redis网站上已经有关于如何设置它的详细文档,但是没有任何关于客户端(在我这种情况下是Node.js服务器)如何处理集群的信息(或者我已经错过了)。我的服务器需要打开2个Redis连接吗:一个用于Master(写入),另一个连接到读取负载均衡器的Slave?Redis驱动程序是否会自动处理并将读取发送至从节点,将写入发送至Master?
const client = redis.createClient(['127.0.0.1:6379', '127.0.0.1:6380'], {onlyMaster: false});
您不需要特别连接到特定的实例,redis集群中的每个实例都有集群信息。因此,即使您连接到一个主节点,您的客户端也会连接到集群中的任何实例。因此,如果您尝试更新存在于不同主节点(而非您连接的那个)中的键,则redis客户端通过使用服务器提供的重定向来处理它。
回答您的第二个问题,您可以通过READONLY命令启用从节点读取。
node-redis
(如果这是您使用的驱动程序)。 - for_stack