首页 > 数据库 >Redis集群搭建以及用idea连接集群

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

时间:2024-09-01 19:51:35浏览次数:7  
标签:redis Redis idea 192.168 cluster 集群 new 节点

一、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"));

    }
}

标签:redis,Redis,idea,192.168,cluster,集群,new,节点
From: https://blog.csdn.net/ABU009/article/details/141719137

相关文章

  • Redis基础知识学习笔记(二)
    文章目录一.Redis安装1.Windows下安装1>资源管理器目录进入2>目录进入命令:3.配置环境变量2.Linux下安装1>安装redis2>启动redis3>查看redis是否启动二.Redis配置1.查看配置2.编辑配置3.参数说明三.Redis数据类型1.String(字符串)常用命令实例2.Hash(哈希)......
  • Redis组件介绍(四)
    写在前面今天继续学习后面的知识。Redis操作命令操作List相关APILPUSH说明:将某个值加入到一个key列表的头部。当列表不存在时会创建。语法:LPUSHkeyvalue[value...]返回值:成功返回列表的元素个数,失败返回0。LPUSHX说明:与LPUSH类似,但必须保证......
  • Redis常见问题总结
    Redis常见问题总结参考小林codingRedis常见问题总结Redis集群架构所产生的问题及如何处理Java全栈知识体系Redis集群搭建目录1.认识Redis2.Redis应用场景3.Redis持久化4.Redis设计认识RedisRedis是一种开源的内存数据结构存储工具,用作分布式内存中的键值数据库......
  • Redis String 命令
    常用命令命令作用例子图片setkeyvalue将值存入redis中setname张三getkey获取对应key的值getnameincrkey将key对应value(只适用数字类型)incragedecrkey将key对应的value-1(只使用数字类型)decragesetexkeysecondsvalue......
  • docker搭建nats集群
    SupportDocker-ComposeDeploynats+nats-streaming集群方案1通过nats+nats-streaming搭建3节点nats集群,nats提供服务;2支持认证;3nats-streaming提供节点和消息持久化;启动gitclonehttps://github.com/xiliangMa/nats-cluster.gitcddocker-composedock......
  • Hausdorff Distance 和 Euclidean Distance Mean欧氏距离
    importtorchimporttorch.nnasnnclassHausdorffDistanceLoss(nn.Module):def__init__(self):super(HausdorffDistanceLoss,self).__init__()defforward(self,pred,target):#扩展为(B,N,1,D)和(B,1,M,D)pred=pred......
  • IDEA 使用教程
    概述视频教程:【尚硅谷IDEA安装idea实战教程(百万播放,新版来袭)】jetbrains中文官网IDEA官网IDEA从IDEA2022.1版本开始支持JDK17,也就是说如果想要使用JDK17,那么就要下载IDEA2022.1或者之后的版本。Jetbrains公司旗下还有其它产品,比如:WebStorm:用于开发JavaScri......
  • [Redis]Intset
    intset小整数集合set集合容纳的元素都是整数并且元素个数较少时,Redis会使用intset来存储集合元素。intset是紧凑的数组结构,同时支持16位、32位和64位整数structintset<T>{ int32encoding;//决定整数位宽是16位、32位还是64 int32length;//元素个数 i......
  • 常用的 Redis 配置命令
    Redis的配置文件(通常是redis.conf)包含了许多配置选项,可以用来调整Redis服务器的行为。以下是一些常用的Redis配置命令及其详解:bind描述:指定Redis监听的IP地址。示例:bind127.0.0.1解释:只允许从本地机器访问Redis实例。port描述:指定Redis监听的端口......
  • Redis基础知识学习笔记(一)
    文章目录Redis简介Redis简介REmoteDIctionaryServer(Redis)是一个由SalvatoreSanfilippo写的key-value存储系统,是跨平台的非关系型数据库,其是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)......