4.1.1 Redis集群搭建&JedisCluster客户端连接

Redis集群搭建&JedisCluster客户端连接



概述

  • 搭建Redis5.0集群,要求三主三从,记录安装步骤
  • 添加一主一丛(Master4和Slaver4),记录安装步骤
  • 能够通过JedisCluster向RedisCluster添加数据和取出数据
    在这里插入图片描述

1.1 搭建Redis5.0集群

三主三从

第一步:安装 C 语言需要的 GCC 环境

yum install -y gcc-c++
yum install -y wget

第二步:下载并解压缩 Redis 源码压缩包

#到/var目录下
cd /var
#下载redis-5.0.5.tar.gz
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
#解压redis-5.0.5.tar.gz
tar -zxf redis-5.0.5.tar.gz

第三步:集群搭建

RedisCluster最少需要三台主服务器,三台从服务器。
端口号分别为:7001~7006
1、编译 Redis 源码,进入 redis-5.0.5 目录,执行编译命令

cd /var
mkdir -p redis-cluster/Master1
cd /var/redis-5.0.5/src
make install PREFIX=/var/redis-cluster/Master1
cp /var/redis-5.0.5/redis.conf /var/redis-cluster/Master1/bin

常规修改redis.conf

cd /var/redis-cluster/Master1/bin
vim redis.conf

#将daemonizeno改为yes
daemonize yes
#默认绑定的是回环地址,默认不能被其他机器访问
#bind 127.0.0.1
#是否开启保护模式,由yes该为no
protected-mode no

(1)创建Master1实例,并编辑redis.conf文件,修改port为7001。
注意:创建实例,即拷贝单机版安装时,生成的bin目录,为Master1目录。
在这里插入图片描述
(2)修改redis.conf配置文件,打开cluster-enable yes
在这里插入图片描述
2、复制Master1,创建Master2、Master3、slaver1~slaver3实例,注意端口修改。

cp -r /var/redis-cluster/Master1/* /var/redis-cluster/Master2
cp -r /var/redis-cluster/Master1/* /var/redis-cluster/Master3
cp -r /var/redis-cluster/Master1/* /var/redis-cluster/slaver1
cp -r /var/redis-cluster/Master1/* /var/redis-cluster/slaver2
cp -r /var/redis-cluster/Master1/* /var/redis-cluster/slaver3

3、创建start.sh,启动所有的实例

vim start.sh
#添加如下内容
cd Master1/bin
./redis-server redis.conf
cd ..
cd ..
cd Master2/bin
./redis-server redis.conf
cd ..
cd ..
cd Master2/bin
./redis-server redis.conf
cd ..
cd ..
cd slaver1/bin
./redis-server redis.conf
cd ..
cd ..
cd slaver2/bin
./redis-server redis.conf
cd ..
cd ..
cd slaver3/bin
./redis-server redis.conf
cd ..
cd ..

chmod u+x start.sh (赋写和执行的权限)
./start.sh(启动RedisCluster)

4、创建Redis集群(创建时Redis里不要有数据)

#cluster-replicas : 1 1从机 前三个为主
#采用机器ip而不采用127.0.0.1 不然外界无法访问

cd /var/redis-cluster/Master1/bin/
[root@localhost bin] ./redis-cli --cluster create 192.168.80.121:7001 192.168.80.121:7002 192.168.80.121:7003 192.168.80.121:7004 192.168.80.121:7005 192.168.80.121:7006 --cluster-replicas 1

运行如下,过程中Can I set the above configuration? (type ‘yes’ to accept):
输入yes
在这里插入图片描述
命令客户端连接集群

命令:./redis-cli -h 127.0.0.1 -p 7001 -c

1.2 添加一主一丛(Master4和Slaver4),安装步骤

第一步:添加主节点

先创建Master4节点 (无数据,需要重新安装,不能复制集群中节点)

cd /var/redis-cluster
mkdir redis-cluster/Master4
cd /var/redis-5.0.5/src
make  install PREFIX=/var/redis-cluster/Master4
cp /var/redis-5.0.5/redis.conf /var/redis-cluster/Master4/bin

修改redis.conf见集群搭建中第三步-1,注意修改端口为7007

第二步:添加从节点

复制Master4

cd /var/redis-cluster
mkdir redis-cluster/Slaver4
cp -r /var/redis-cluster/Master4/* /var/redis-cluster/Slaver4

第三步:添加Master4结点作为新节点,并启动

启动

cd /var/redis-cluster/Master4/bin
./redis-cli redis.conf

执行命令:

cd /var/redis-cluster/Master4/bin
[root@localhost bin] ./redis-cli --cluster add-node 192.168.80.121:7007
192.168.80.121:7001

如下添加成功
在这里插入图片描述

第四步:hash槽重新分配(数据迁移)

添加完主节点需要对主节点进行hash槽分配,这样该主节才可以存储数据。
给刚添加的Master4结点分配槽
1、查看集群中槽占用情况
cluster nodes
在这里插入图片描述
2、连接上集群(连接集群中任意一个可用结点都行)

cd /var/redis-cluster/Master4/bin
[root@localhost bin] ./redis-cli --cluster reshard 127.0.0.1:7007

2.1 输入要分配的槽数量

How many slots do you want to move (from 1 to 16384)? 3000

输入:3000,表示要给目标节点分配3000个槽
2.2 输入接收槽的结点id

What is the receiving node ID?

输入:a9761d0855499514384b37d0638a5bcff9689a33

PS:这里准备给7007分配槽,通过cluster nodes查看Master4结点id为:
a9761d0855499514384b37d0638a5bcff9689a33

2.3 输入源结点id
在这里插入图片描述
输入:all

2.4 输入yes开始移动槽到目标结点id
在这里插入图片描述
输入:yes

第五步:添加从节点(Slaver4)

先启动Slaver4

cd /var/redis-cluster/Slaver4/bin
./redis-cli redis.conf

添加Slaver4从结点,将Slaver4作为Master4的从结点
命令:

./redis-cli --cluster add-node 新节点的ip和端口 旧节点ip和端口 --cluster-slave
–cluster-master-id 主节点id

./redis-cli --cluster add-node 192.168.80.121:7008 192.168.80.121:7007 --cluster-slave --cluster-master-id a9761d0855499514384b37d0638a5bcff9689a33

a9761d0855499514384b37d0638a5bcff9689a33是Master4结点的id,可通过cluster nodes查看。
如下添加成功:
在这里插入图片描述

1.3 通过JedisCluster向RedisCluster添加数据和取出数据

第一步 创建maven项目,导入依赖

pom.xml

<dependencies>
    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.3</version>
    </dependency>
</dependencies>

第二步 创建连接类JedisClusters.java

package com.lagou.redis;

import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;

import java.io.IOException;
import java.util.HashSet;
import java.util.Set;

public class JedisClusters{

    public static void main(String[] args) {
        JedisPoolConfig config = new JedisPoolConfig();
        Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();

        //添加集群节点
        jedisClusterNodes.add(new HostAndPort("192.168.80.121", 7001));
        jedisClusterNodes.add(new HostAndPort("192.168.80.121", 7002));
        jedisClusterNodes.add(new HostAndPort("192.168.80.121", 7003));
        jedisClusterNodes.add(new HostAndPort("192.168.80.121", 7004));
        jedisClusterNodes.add(new HostAndPort("192.168.80.121", 7005));
        jedisClusterNodes.add(new HostAndPort("192.168.80.121", 7006));
        jedisClusterNodes.add(new HostAndPort("192.168.80.121", 7007));
        jedisClusterNodes.add(new HostAndPort("192.168.80.121", 7008));

        //获取集群连接
        JedisCluster jedisCluster = new JedisCluster(jedisClusterNodes, config);

        //设置值
        jedisCluster.set("name:001","zhaoyun");

        //获取值
        String value = jedisCluster.get("name:001");
        System.out.println(value);

        //关闭连接
        try {
            jedisCluster.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值