redis通过redis-trib.rb create –replicas命令创建集群时报一下异常:
ERR] Node 172.**.**.**:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
原因:
节点不是第一次使用。该节点可能与其他节点组成集群,或者在数据库0中包含一些数据。
如果组成过集群,在上一次创建集群时候会生成备份的文件、日志log文件、配置和一些脚本。如appendonly.aof、dump.rdb、nodes.conf 等文件(注意src路径下的node.conf文件也要删除),直接删除即可(需要先停redis服务)。
注:
rdb文件是定时将内存中的数据持久化到dump.rdb文件中。(全量备份)
对应conf配置文件中:dbfilename dump.rdb
aof文件是监听Redis日志,监听到变化时将指令持久化到appendonly.aof文件中。(指令追加)
对应conf配置文件中:appendfilename "appendonly.aof
nodes.conf 文件是redis运行时产生的节点配置文件。当启用集群模式配置cluster-enabled指令为yes时,每个节点实例都包含一个文件,这个文件存储该节点的配置,模式是nodes.conf。这个文件从来不会被手动创建,它是Redis集群实例启动的时候生成的,并且每次在需要的时候自动更新。
解决方法:
1.停止所有redis服务!(不停止服务直接删除文件无效!!!)
2.删除aof、rdb、nodes.conf 文件
3.重启redis服务。
4.必要的情况下执行flushdb。
附一个redis常见问题解决办法的链接
redis cluster集群常见错误问题记录_金麟十三少的博客-CSDN博客