redis学习之集群报错Node is not empty

  • Post author:
  • Post category:其他


写在前面

继上一篇

redis3.0.x集群搭建

完成之后,当然要用客户端JedisCluster简单测试一下集群啦,这样就要将redis.conf里bind 127.0.0.1改成bind +真机ip(我的192.168.161.131),下面简单地将测试中遇到的问题及解决办法记录在本篇。

遇到的问题及解决办法

在redis.conf里bind 真机ip后,接着重新执行每个redis.conf,最后再创建集群,但报错,如下图所示:

这里写图片描述

图中报的错即:

[ERR] Node 192.168.161.131:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

这就奇怪了,于是我又去检查了一下redis.conf,ip我确实改过来了

这里写图片描述

想了一会发现这三个文件appendonly.aof dump.rdb nodes.conf是之前执行ip127.0.0.1时生成的,在我改为真机ip后在执行并没有生效。

这里写图片描述

这里解释一下

dump.rdb

文件:

dump.rdb是由Redis服务器自动生成的 默认情况下 每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”的文件里,这个持久化机制叫做SNAPSHOT。有了SNAPSHOT后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库状态恢复到上一次做SNAPSHOT时的状态。

知道原因后就好办了,

解决办法:

1)将每个节点下aof、rdb、nodes.conf本地备份文件删除;

2)172.168.63.201:7001> flushdb #清空当前数据库(可省略)

3)之后再执行脚本,成功执行;

问题解决了之后就可以成功从java客户端测试了:

这里写图片描述

ps:这里大家不要这样测试,可以将其写在配置文件里,我这里是为了方便。

写在最后

其实平时在测试中遇到的很多问题,都可以在网上找到答案,这里只是简单的记录其中的一个。关于关于redis集群的介绍,了解请看

redis中文介绍



版权声明:本文为wudalang_gd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。