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

一、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.mzph.cn/diannao/52881.shtml

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

相关文章

零基础学习Redis(7) -- hash类型命令使用

Redis本身就是通过哈希表的方式组织数据&#xff0c;同时redis中的value也可以是另一个哈希表。 1. 常用命令 1. hset / hsetnx hset key filed1 value1 filed2 value2 ... hset 用于把键值对存入value中&#xff0c;这里的key为redis组织的键&#xff0c; filed1 value1 fil…

JavaWeb笔记整理10——JWT令牌、Filter、Interceptor

目录 1.简介 2.生成和校验 3.登录-生成令牌 4.过滤器Filter 快速入门 Filter执行流程 Filter拦截路径 过滤器链 登录校验Filter 流程 代码 5.拦截器Interceptor 快速入门 Interceptor拦截路径 执行流程 代码 继笔记04-session cookie 1.简介 2.生成和校验 /*…

计算机毕业设计选题推荐-摇滚音乐鉴赏网站-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

Linux信号处理机制基础

什么是信号 信号在最早的UNIX系统中即被引入&#xff0c;已有30多年的历史&#xff0c;但只有很小的变化。信号是提供异步事件处理机制的软件中断。进程之间可以相互发送信号&#xff0c;这使信号成为一种进程间通信(Inter-ProcessCommunication,lPC)的基本手段 信号的名称与…

splunk Enterprise 的HTTP收集器-windows

1.创建HTTP收集器 2.使用HTTP收集器 然后打开全局设置&#xff1a;把ssl给去掉&#xff0c;点保存&#xff08;保存之后&#xff0c;可以看到这些状态全部都是已启用了&#xff09;&#xff1a; 3.测试&#xff1a; curl --location --request POST http://192.168.11.131:808…

u盘pe怎么安装系统_u盘pe安装系统详细步骤

u盘pe怎么安装系统&#xff1f;u盘pe安装系统需要准备一个u盘&#xff0c;然后将u盘制作成pe&#xff0c;进入pe后再安装系统&#xff0c;下面小编就教大家u盘pe安装系统详细步骤教程。 u盘pe启动盘是什么&#xff1f; u盘pe启动盘是一种可引导的USB存储设备&#xff0c;其中包…

10:Logic软件原理图中添加电源与GND

Logic软件原理图中添加电源与GND

续:docker 仓库数据传输加密

上一个实验&#xff1a;非加密的形式在企业中是不被允许的。 示例&#xff1a;【为Registry 提供加密传输】 因为传输也是https&#xff0c;所以与ssh一样的加密。 ## 这种方式就不用写这个了。 [rootdocker ~]# cat /etc/docker/daemon.json #{ # "insecure-registrie…

7个流行的开源数据治理工具

数字化时代&#xff0c;数据是已经成为最宝贵的资产之一。数据支撑着我们的政府、企业以及各类组织的所有流程&#xff0c;并为决策以及智能化服务提供支撑。大数据有大用途&#xff0c;但是也可能隐藏着巨大的风险&#xff0c;特别是如果我们对数据的情况不是很了解的时候&…

计算机组成原理:实验四常规型微程序控制器组成实验

一、实验目的 1.掌握时序产生器的组成原理。 2.掌握微程序控制器的组成原理。 3.掌握微指令格式的化简和归并。 二、实验电路 1.时序发生器 TEC-4计算机组成原理实验系统的时序电路如图4.1所示。电路采用2片GAL22V10&#xff08;U6、U7&#xff09;&#xff0c;可产生两极…

钓鱼特辑(四)安全较量,摆脱“麻瓜”标签

时至今日&#xff0c;尽管员工们对网络安全有所了解&#xff0c;却往往因缺乏足够的安全意识而对攻防没有直观感知。在红队看来&#xff0c;普通员工可能犹如“麻瓜”&#xff0c;防御薄弱&#xff0c;易于突破。 现在红队以求职者或合作方等“人畜无害”的身份在日常沟通中发动…

Windows中pip换源

step1&#xff1a;检查是否安装 输入如下&#xff0c;出现版本号&#xff0c;就是安装好了 pip -V或pip --version pip3 -V pip3 --version step2&#xff1a;找到&#xff08;创建&#xff09;配置文件 对于 Windows 用户&#xff0c;配置文件在【%APPDATA%\pip\pip.ini】文…

使用LinkedHashMap实现固定大小的LRU缓存

使用LinkedHashMap实现固定大小的LRU缓存 1. 什么是LRU&#xff1f; LRU是"Least Recently Used"的缩写&#xff0c;意为"最近最少使用"。LRU缓存是一种常用的缓存淘汰算法&#xff0c;它的核心思想是&#xff1a;当缓存满时&#xff0c;优先淘汰最近最少…

Mac下的压缩包和Win看到的不一样怎么办 Mac压缩后Win电脑看文件名会乱码

在当今多平台的数字工作环境中&#xff0c;Mac和Windows用户常常需要交换文件&#xff0c;但有时候会遇到一些兼容性问题。特别是在处理压缩文件时&#xff0c;Mac用户创建的压缩包在Windows系统中打开时&#xff0c;常常会遇到文件名乱码的问题。本文将详细讨论“Mac下的压缩包…

C语言基础(二十八)

1、冒泡排序&#xff1a; #include "date.h" #include <stdio.h> #include <stdlib.h> #include <time.h> // 函数声明 void bubbleSort(int *arr, int n); int* createRandomArray(int n, int *size); int main() { int time getTi…

22行为型设计模式——解释器模式

一、解释器模式 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;主要用于解析和解释特定的语言或表达式。它的核心思想是为语言中的每种语法规则定义一个解释器&#xff0c;通过这些解释器将语言的表示形式转换为可执行的操作。解释器…

【Python机器学习】NLP词频背后的含义——距离和相似度

我们可以使用相似度评分&#xff08;和距离&#xff09;&#xff0c;根据两篇文档的表示向量间的相似度&#xff08;或距离&#xff09;来判断文档间有多相似。 我们可以使用相似度评分&#xff08;和举例&#xff09;来查看LSA主题模型与高维TF-IDF模型之间的一致性。在去掉了…

STM32基于HAL库串口printf使用和接收

我们这里使用HAL库直接用cubemx生成代码配置串口 1.打开cubemx&#xff0c;选择MCU型号 2.我这里使用的是STM32F103C8T6&#xff0c;根据自己的型号选择&#xff0c;这里不限制型号 3.选择时钟源 4.系统设置 5时钟配置 5.选择和配置串口 5.配置中断和中断优先级 6.工程设置…

node环境安装、vue-cli搭建过程、element-UI搭建使用过程

vue-cli 官方提供的一个脚手架&#xff0c;用于快速生成一个 vue 的项目模板&#xff1b;预先定义好的目录结构及基础代码&#xff0c;就好比咱们在创建 Maven 项目时可以选择创建一个骨架项目&#xff0c;这个骨架项目就是脚手架&#xff0c;我们的开发更加的快速 前端项目架…

探索Python测试的奥秘:nose库的魔法之旅

文章目录 探索Python测试的奥秘&#xff1a;nose库的魔法之旅1. 背景&#xff1a;为什么要用nose&#xff1f;2. nose是什么&#xff1f;3. 如何安装nose&#xff1f;4. 五个简单的库函数使用方法4.1 nose.tools.assert_true4.2 nose.tools.assert_equal4.3 nose.tools.raises4…