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

news2024/9/21 18:42:17

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

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2103067.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Datawhle X 李宏毅苹果书AI夏令营深度学习笔记之——卷积神经网络

卷积神经网络简介 卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种深度学习模型&#xff0c;尤其擅长处理图像和视频等高维度的数据。CNN 通过模仿人类视觉系统的工作方式&#xff0c;自动学习数据中的空间层次结构&#xff0c;使得它在计算机视…

我找到了一个让ChatGPT稳定通过草莓测试的方法,百试百灵!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…

windows C++ 并行编程-并发和UWP(三)

控制执行线程 Windows 运行时使用 COM 线程模型。 在此模型中&#xff0c;根据对象处理其同步的方式&#xff0c;对象被托管在不同的单元中。 线程安全对象托管在多线程单元 (MTA) 中。 必须通过单个线程访问的对象托管在单线程单元 (STA) 中。 在具有 UI 的应用程序中&#…

系统找不到指定的文件怎么解决?

把U盘插在电脑上&#xff0c;当我打开U盘中的文件时&#xff0c;弹窗提示系统找不到指定的文件&#xff0c;这是什么情况&#xff1f;有谁遇到过吗&#xff1f;大家有没有解决办法&#xff1f; 这个问题可能大家并不陌生&#xff0c;可能也曾遇到过&#xff0c;造成问题出现的原…

DriveLM的baseline复现

DriveLM是一篇很有意思的工作&#xff0c;把自动驾驶跟MLLM结合到一起了&#xff0c;实现端到端的感知or决策规划。 Repo&#xff1a;https://github.com/OpenDriveLab/DriveLM 该工作是基于nuScenes数据集做的&#xff0c;官方paper里给出了数据的具体构建方式&#xff0c;感…

云计算之ECS

目录 一、ECS云服务器 1.1 ECS的构成 1.2 ECS的实例规格 1.3 镜像 1.4 磁盘 1.5 安全组 1.6 网络 1.7 产品结构 二、块存储介绍 2.1 快存储定义 2.2 块存储性能指标 2.3 快存储常用操作-云盘扩容 2.4 块存储常见问题 三、快照介绍 3.1 快照定义 3.2 快照常见问题…

《python语言程序设计》第8章第12题生物信息:找出基因,生物学家使用字母A C T和G构成字符2串建模一个基因组(下)

一、上一个版本 抱歉各位兄弟我感觉这道题我现在的能力有限,不纠结了跳过去.等第3刷的时候解决吧. 可能彼岸就在眼前,但是我累了.等下次吧 这个版本中div_text函数已经可以很好的划分字符串了 但是我发现了一个问题.它间隔字符效果如下 genome_text TTATGTTTTAAGGATGGGGCGTTAG…

CSS - 搜索框小动效

点击搜索框动画变长&#xff0c;搜索框有内容不变&#xff0c;无内容失去焦点&#xff0c;变回原来模样。<div :class"type true ? s_r_z : s_r" click"onChange"><div class"input_s"><input blur"handleBlur" v-mo…

QTC++联合编程之解决代码语句块折叠并中文注释代码块

目录&#xff1a; 一&#xff0c;前言二&#xff0c;解决方法2.1直接折叠代码段落&#xff0c;不命名2.2折叠代码段落并注释&#xff08;中/英文&#xff09;命名2.3使用模板 三&#xff0c;参考文章 一&#xff0c;前言 如果从C#或者从其他语言学习过&#xff0c;一定会感叹ID…

Android实习面经整理第一篇

蔚来Android实习面经 一面(2024/3/11 35min) 自我介绍聊我的本专业说一说MVP架构,MVVM架构 MVP:V层持有P层,用户点击View,把数据发给P层,P层持有M层,然后P层把V层的数据发给M层获取其他数据,最后M层获取完数据后把数据还给P层,更新V层。P层也有V层的引用。MVVM:V层…

使用ElementUI + Vue框架实现学生管理系统前端页面设计

目录 一.什么是ElementUI&#xff1f; 二.使用ElementUI和Vue-cli搭建前端页面 三.具体步骤 1.创建vue-cli项目 2.分析 3.创建组件 四.总结 一.什么是ElementUI&#xff1f; ElementUI是一种网站快速成型工具&#xff0c;一套为开发者&#xff0c;设计师准备的基于Vue2.…

江协科技stm32————11-4 SPI通信协议

目录 SPI外设简介 SPI框图 波特率控制 SPE&#xff08;SPI使能&#xff09; 配置主从模式 四种模式的选择 发送和接收数据缓冲区状态 I2C基本结构 1. SPI模式选择 2. 时钟极性和相位&#xff08;CPOL和CPHA&#xff09; 3. 波特率设置 4. 数据帧格式 5. NSS引脚管…

Steam游戏截图方法

Steam游戏截图方法 截图快捷键 Steam游戏自带截图功能&#xff0c;在游戏中无需复杂的快捷键&#xff0c;仅需按下F12快捷键便可立即截图&#xff0c;官方说明如下。下文介绍使用方法。 查看截图 退出游戏后&#xff0c;在Steam界面点击查看 - 截图&#xff0c;即可查看截…

AndroidLogger 适配好了,但没法上架

看到有网友还在用之前的 AndroidLogger 版本&#xff0c;让我感动再次花了 2个月适配新的Notepad&#xff0c;总算搞完了&#xff0c;但是Notepad作者反了&#xff0c;我没法上架啊。 演示视频地址&#xff1a; Notepad安卓日志插件&#xff0c;支持文件管理和截屏&#xff0c…

无需前端技能:如何使用 Amis 框架简化页面开发

Amis 是一个由百度开源的前端低代码框架&#xff0c;它允许开发者通过 JSON 配置文件来快速生成各种后台管理页面。Amis 的设计理念是通过配置而非编码来实现页面的构建&#xff0c;这使得即使是不熟悉前端技术的开发者也能快速上手。Amis 提供了丰富的组件库和模板&#xff0c…

Mqtt消费端实现的几种方式

此处测试的mqtt的Broker是使用的EMQX 5.7.1&#xff0c;可移步至https://blog.csdn.net/tiantang_1986/article/details/140443513查看详细介绍 一、方式1 添加必要的依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spr…

蒸馏之道:如何提取白酒中的精华?

在白酒的酿造过程中&#xff0c;蒸馏是一道至关重要的工序&#xff0c;它如同一位技艺精细的炼金术士&#xff0c;将原料中的精华提炼出来&#xff0c;凝聚成滴滴琼浆。今天&#xff0c;我们就来探寻这蒸馏之道&#xff0c;看看豪迈白酒&#xff08;HOMANLISM&#xff09;是如何…

Linux 学习之路 - 信号的保存

前面已经介绍过信号的产生&#xff0c;本文将继续介绍信号的保存与处理。 1、上篇文章的遗留问题 从上篇文章(Linux学习之路 -- 信号概念 && 信号的产生-CSDN博客)中&#xff0c;其实还遗留了一些问题。OS在接受到信号后&#xff0c;大部分的进程的处理方式都是终止进…

合宙低功耗4G模组Air780E——产品规格书

Air780E 是合宙通信推出的 LTE Cat.1 bis通信模块&#xff1b; 采用移芯EC618平台&#xff0c;支持 LTE 3GPP Rel.13 技术。 Air780E特点和优势总结如下&#xff1a; 全网通兼容性&#xff1a; 作为4G全网通模块&#xff0c;兼容不同运营商网络&#xff0c;包括但不限于移动、…

【C++ Primer Plus习题】10.1

问题: 解答: main.cpp #include <iostream> #include "BankAccount.h" using namespace std;int main() {BankAccount BA1("韩立","韩跑跑",1);BA1.get_info();BankAccount BA;BA.init_account("姚国林", "amdin", 1…