场景

redis哨兵模式执行select 0命令报错:
(error) ERR unknown command select, with args beginning with: 0

解决方案

sentinel-10.12.168.71-6395 主节点名(注,这个节点名通过redis-cli是无法直接连的,但是spring可以)
三个node节点为:
10.12.168.68:6395,10.12.168.69:6395,10.12.168.70:6396

redis-cli -h sentinel-10.12.168.71-6395 -p 6395 -a 1234   不通
redis-cli -h 10.12.168.68 -p 6395 -a 1234   通,但是执行 select 0 报错
redis-cli -h 10.12.168.69 -p 6395 -a 1234   通,但是执行 select 0 报错
redis-cli -h 10.12.168.70 -p 6396 -a 1234   通,但是执行 select 0 报错

那么怎么办呢?
虽然不能执行select 0,但是可以执行 info,找到主节点信息,然后连接主节点再进行操作即可:

redis-cli -h 10.12.168.71 -p 6395 -a 1234
select 0
keys "orgList"
del "orgList"

为什么会出现上述情况呢?
因为哨兵的nodes不是主节点,也不是从节点,也就是说不是数据节点,而是监控节点,主要为了当主节点挂掉之后,选举新的主节点。
所以在nodes节点是无法运行select、keys等命令的。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐