Redis集群搭建以及用idea连接集群

6 篇文章 0 订阅

一、redis的集群搭建:

判断一个是集群中的节点是否可用,是集群中的所用主节点选举过程,如果半数以上的节点认为当前节点挂掉,那么当前节点就是挂掉了,所以搭建redis集群时建议节点数最好为奇数,搭建集群至少需要三个主节点,三个从节点,至少需要6个节点

1、安装ruby

# 1.准备环境安装ruby以及redis集群依赖
- yum install -y ruby rubygems

2、在一台机器创建7个配置文件    

3、修改不同目录配置文件

记住全部都开启守护进程

4、查看进程

 [root@localhost bin]# ps aux|grep redis

结果如下:

二、创建集群:

1.复制集群操作脚本到bin目录中

就是将redis解压文件中的redis-trib.rb复制到redis的bin目录下

[root@master redis-cluster]# cp /usr/local/soft/redis-7.0.0/src/redis-trib.rb /usr/local/soft/redis/bin/

2.创建集群 

新的的命令:redis-cli --cluster create 192.168.23.100:6000 192.168.23.100:6001 192.168.23.100:6002 192.168.23.100:6003 192.168.23.100:6004 192.168.23.100:6005 --cluster-replicas 1

 3.集群创建成功出现如下提示

三、查看集群状态

1.查看集群状态 check  [原始集群中任意节点] 

无论查询集群中的哪一个节点,都会显示出整个集群的节点状态

redis-cli --cluster check 192.168.29.100:6000  

2.集群节点状态说明

 - 主节点 
    主节点存在hash slots,且主节点的hash slots 没有交叉
    主节点不能删除
    一个主节点可以有多个从节点
    主节点宕机时多个副本之间自动选举主节点

 - 从节点
    从节点没有hash slots
    从节点可以删除
    从节点不负责数据的写,只负责数据的同步

2.1哨兵机制(演示其中一个主节点宕机的状态,然后从节点接管)

哨兵机制:当主节点7000崩溃或者进程被杀死,会由他的一个字节点(比如:7004)来替代,成为新的主节点,哪怕后面主节点7000被修复了,也只能成为7004的字节点

3.添加子节点

1.添加主节点 add-node [新加入节点] [原始集群中任意节点]

redis-cli --cluster add-node 192.168.23.100:7006 192.168.23.100:7004 --cluster-slave 	
- 注意:
	1.该节点必须以集群模式启动
	2.默认情况下该节点就是以master节点形式添加

4.删除副本节点

 1.删除节点 del-node [集群中任意节点] [删除节点id]

- redis-cli --cluster del-node 192.168.169.100:7002 f303c5ae2065accd204c96739fb0bf8e1ba0880e
- 注意:
 1.被删除的节点必须是从节点或没有被分配hash slots的节点

用Linux命令行连接redis服务器:

只能单独的连某一个服务器,访问数据的操作都只能去M(master主节点服务器),S(子/从节点服务器)是同步(保存)主节点的数据。

演示如下:

用可视化软件连接redis:

只要连接主节点服务器,就能显示整个集群的数据

用idea连接redis集群:

用idea连接redis集群, 如果用new Jedis()只是单独连redis某个主服务器,如果设置的key的字段不在该主节点的solt范围内,就会报错。要用new JedisCluter(Set<hostAndport>jiqun),里面的set集合是添加redis集群内所有的节点,这样再次进行插值(set xxx xx)就不用考虑在哪个solt(槽),但是用del删除key的时候,需要注意:删除多个key的时候,要保证撒删除的key在同一个solt内,否则就删除失败报错,不知道key的位置,就一个个单独删除。

具体代码如下:

连接redis集群 :

1、先创建一个Set集合,集合的类型是实例类HostAndPort,将所有的redis的host和port存放进去。

HashSet<HostAndPort> hostAndport = new HashSet<>();

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

import java.util.HashSet;

public class redis {
    public static void main(String[] args) {
//        //连接某一个redis服务器
        Jedis jedis = new Jedis("192.168.23.100", 6379);
        System.out.println("redis数据库连接成功!"+jedis);
        System.out.println(jedis.set("name", "猪八戒"));
        System.out.println(jedis.get("name"));

         //连接redis集群
        //TODO:1、先创建一个Set集合,集合的类型是实例类HostAndPort,将所有的redis的host和port存放进去
        //TODO:注意redis集群cluster和单个redis服务器(jedis)操作数据基本一样
        //TODO:可以将大的集群cluster当做单个jedis使用,但唯一不同的是在del删除键的时候,
        //TODO:如果需要同时删除多个key,需要保证这些key在同一个solt范围内,如果不清楚只能一个个单独删除
        HashSet<HostAndPort> hostAndport = new HashSet<>();
       hostAndport.add(new HostAndPort("192.168.40.100",6000));
       hostAndport.add(new HostAndPort("192.168.40.100",6001));
       hostAndport.add(new HostAndPort("192.168.40.100",6002));
       hostAndport.add(new HostAndPort("192.168.40.100",6003));
       hostAndport.add(new HostAndPort("192.168.40.100",6004));
       hostAndport.add(new HostAndPort("192.168.40.100",6005));
        JedisCluster cluster = new JedisCluster(hostAndport);
        cluster.set("age", "23");
        cluster.set("name", "zzj");
        System.out.println("姓名:"+cluster.mget("name")+","+"年龄:"+cluster.get("age"));

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的K8409

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值