今天下午本来打算花一个小时搞完的,结果搞到现在,我也是服了,本来以为redis挺熟的,结果遇到很多问题,记录下心路历程,因为大概率还会遇到
粗体是问题和解决方法,其他的都是我的批话
首先,第一个错误
1.redis提示,用redis-cli搭建集群
是看视频用的ruby搭建集群,ruby搭建过程中。
报错:原文我就不摘抄了,意思就是集群搭建方法可以用redis-cli了,不用ruby了。
所以我换了redis5.0.5来继续搭建,我不确定ruby还能不能用,网上有教程是关于ruby搭建的,redis大部分还是3.x.x的
第二个错误,很傻的认知错误
2.误以为主从复制就是集群
从结果来看,集群是把多个redis划分区域,把接收的内容分开存。
主从复制是一个主redis,多个从redis,一般用作读写分离,主从保持同步。
配置而言
集群改cluster模块
主从改replication模块
一个redis的两者不能同时开启,不然会启动用不了。
正确应该是一个集群节点做主搭配几个从然后开多个哨兵就高可用了
我在两个配置之间配来配去,最中一致选择了主从复制(走远了)。
以上的结果就是,jedisCluster报错都连不上redis,错误千奇百怪,没有参考性的错误就不说了
3.jedisCluster构造方法没有String password
Spring注入发现无法注入passwd,jedisCluster.auth()显示废弃,构造方法也没有这个参数。
百度一波,发现是jedis版本问题,我的版本2.7.3,换了2.9.0就有了
4.发现混淆之后我重新配置,开启集群命令又报错:
[ERR] Node 47.103.123.156:7004 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
这里错误之前还有,节点没配置统一的密码,没配置密码却发送了密码,这些错误太容易,看英文都能明白怎么解决。
这个错误我百度解决了,要删除每个redis文件夹下的rdb文件和node.conf,然后重新集群就可以了
5.Waiting for the cluster to join卡住
问题在于,集群访问端口和配置端口不一样,这个原理我不知道,百度的大手子说,原端口+10000就是集群端口,因为我用的阿里云,所以改了防火墙就好了
6.一个忘记了是什么错误的错误
好像报的错就是connection refuse
就是主从复制搭建好了,然而jedis连接不上,百度是bind 不能绑定127.0.0.1,注释掉即可
然后就连上了,写完继续冲冲冲