1、在centos中新建目录/data/soft,将redis-5.0.4.tar.gz安装包上传到/data/soft目录下
将redis-5.0.4.tar.gz文件解压
tar -zxvf redis-5.0.4.tar.gz
将解压后的文件redis-5.0.4重命名为redis
mv redis-5.0.4 redis
安装gcc依赖
yum install gcc
2、进入到/data/soft/redis目录下
# 编译安装
make MALLOC=libc
# 安装
cd src && make install
3、进入到/data/soft/redis目录下,创建目录cluster,并且在cluster目录下创建7001、7002、7003、7004、7005、7006这6个目录
4、进入到/data/soft/redis/cluster/7001目录下
将/data/soft/redis/redis.conf文件复制到/data/soft/redis/cluster/7001
# 进入/data/soft/redis/cluster/7001目录下
cd /data/soft/redis/cluster/7001
# copy redis.conf文件
cp /data/soft/redis/redis.conf redis.conf
同样的操作,将/data/soft/redis/redis.conf分别copy到/data/soft/redis/cluster/7002、7003、7004、7005、7006的目录下
5、修改/data/soft/redis/cluster/7001/redis.conf文件配置信息如下:
bind 192.168.1.21
port 7001
daemonize yes
pidfile /var/run/redis_7001.pid
dir "./" # node.conf文件保存路径
logfile "/var/log/redis/7001/redis.log"
appendonly yes
appendfsync always
cluster-enabled yes
cluster-config-file nodes-7001.conf # 该文件中包含集群信息
修改/data/soft/redis/cluster/7002/redis.conf文件配置信息如下:
bind 192.168.1.21
port 7001
daemonize yes
pidfile /var/run/redis_7002.pid
dir "./" # node.conf文件保存路径
logfile "/var/log/redis/7002/redis.log"
appendonly yes
appendfsync always
cluster-enabled yes
cluster-config-file nodes-7002.conf # 该文件中包含集群信息
根据上面进行修改7003/redis.conf、7004/redis.conf、7005/redis.conf、7006/redis.conf
6、启动6个redis节点
启动redis节点时需要注意,一定要进入到每一个节点的目录中,然后执行启动命令
# 进入到7001节点目录
cd /data/soft/redis/cluster/7001
# 执行启动命令
/data/soft/redis/src/redis-server ./redis.conf
同样的操作,启动7002、7003、7004、7005、7006其他节点
7、创建redis集群
/data/soft/redis/src/redis-cli --cluster create 192.168.1.21:7001 192.168.1.21:7002 192.168.1.21:7003 192.168.1.21:7004 192.168.1.21:7005 192.168.1.21:7006 --cluster-replicas 1
8、问题汇总
8.1、redis.conf文件中 bind 127.0.0.1 注释掉
8.2、redis.conf文件中 protected-mode yes改为protected-mode no
8.3、第7步–cluster create 语句中 ip要用公网ip
9、测试代码
public static void main(String[] args) {
try {
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.1.21", 7001));
nodes.add(new HostAndPort("192.168.1.21", 7002));
nodes.add(new HostAndPort("192.168.1.21", 7003));
nodes.add(new HostAndPort("192.168.1.21", 7004));
nodes.add(new HostAndPort("192.168.1.21", 7005));
nodes.add(new HostAndPort("192.168.1.21", 7006));
//在nodes中指定每个节点的地址
//jedisCluster在系统中是单例的。
JedisCluster jedisCluster = new JedisCluster(nodes);
jedisCluster.set("name", "张明");
jedisCluster.set("value", "2000");
String name = jedisCluster.get("name");
String value = jedisCluster.get("value");
System.out.println(name);
System.out.println(value);
//系统关闭时关闭jedisCluster
jedisCluster.close();
} catch (Exception e) {
e.printStackTrace();
}
}
参考:Redis5版本集群搭建