【异常】本地的Redis集群连不上,错误提示ERR SELECT is not allowed in cluster mode,配置文件实现动态控制Redis单机与集群模式

一、报错内容

Unable to connect to Redis
错误:ERR SELECT is not allowed in cluster mode

在这里插入图片描述

https://blog.csdn.net/qq_40580037/article/details/107508694
https://blog.csdn.net/xu990128638/article/details/116135354

二、报错说明

Redis集群模式下只能选择db0,选择其他库会抛以上异常。
原文地址: https://github.com/delano/redis-dump/issues/25

三、报错解决

最后回滚了为单机版本的Redis配置文件问题解决了

3.1 查看本地的host文件

host中正常进行ip的转换。
在这里插入图片描述

3.2 查看Nacos配置中心中的Redis文件

查看现在的配置情况,是否存在Redis配置异常的问题,

3.2.1 单机配置

redis:
	host: xxxx-redis
	port: 6379
	password:
	database: 2

3.2.2 集群配置

redis:
	database: 2
	cluster:
	#设置key的生存时间,当key过期时,它会被自动删除;
	expire-seconds: 120
	#设置命令的执行时间,如果超过这个时间,则报错;
	command-timeout: 5000
	#设置redis集群的节点信息,其中namenode为域名解析,通过解析域名来获取相应的地址;
	nodes: IP1:Port1,IP2:Port2,IP3:Port3,IP4:Port4
	password: xxxx

四、配置文件动态控制,Redis单机与集群模式

以下是使用开关控制Redis单机与集群模式的示例yaml文件:

# 定义Redis连接信息
redis:
  host: 127.0.0.1
  port: 6379
  password: ''

# 定义开关信息
cluster_mode: false

# 如果cluster_mode为false,则使用单机模式
# 如果cluster_mode为true,则使用集群模式
# 根据实际情况设置Redis集群节点信息
cluster_nodes: ['127.0.0.1:7000', '127.0.0.1:7001', '127.0.0.1:7002']
cluster_timeout: 5000

在该yaml文件中,定义了Redis的连接信息(redis.host、redis.port、redis.password),并且使用cluster_mode开关来控制Redis的运行模式。

  • 如果cluster_mode为false,则使用单机模式;
  • 如果cluster_mode为true,则使用集群模式。

在单机模式下,只需要设置Redis的连接信息即可。

在集群模式下,还需要提供Redis集群节点的信息(cluster_nodes),以及集群模式的超时时间(cluster_timeout)。可以根据实际情况设置集群节点的IP地址和端口号。

通过读取这个yaml文件,可以根据cluster_mode的值来决定使用哪种模式的Redis连接信息,从而实现动态控制Redis的运行模式。

猜你喜欢

转载自blog.csdn.net/wstever/article/details/129216197
今日推荐