1. エラー内容
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
2. エラーの説明
Redis クラスター モードでは、db0 のみを選択でき、他のライブラリを選択すると上記の例外がスローされます。
元のアドレス: https://github.com/delano/redis-dump/issues/25
3、エラー解決
最後に、スタンドアロン バージョンの Redis 構成ファイルをロールバックし、問題は解決しました。
3.1 ローカルホストファイルの表示
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
4. 構成ファイルの動的制御、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 の動作モードを動的に制御できます。