分布式项目08 redis的扩容,预备redis宕机的哨兵处理 和 最后集大成redis集群

news2024/11/19 0:48:16

01.redis扩容
由于redis的容量也是有限的,所以,就会有扩容的操作。也就好像内存中扩容一样。redis有分片这种说法,具体实现操作如下:

第一步:首先在/usr/local/src中去找到redis文件夹。cd /usr/local/src 而后进入redis文件夹。使用的linux命令是 cd redis 。

第二步:
01.使用查看当前redis进程的命令ps -ef|grep redis,
ps 命令的作用是显示进程信息的;| 符号,是个管道符号,表示ps 和 grep 命令同时执行;ps命令有一些参数:
-e : 显示所有进程
-f : 全格式
-h : 不显示标题
-l : 长格式
-w : 宽输出
a :显示终端上的所有进程,包括其他用户的进程。
r :只显示正在运行的进程。
u :以用户为主的格式来显示程序状况。
x :显示所有程序,不以终端机来区分。

grep 命令是查找,能使用正则表达式搜索文本,然后把匹配的行显示出来;


02.并且关闭redis服务。使用命令redis-cli -p 6379 shoudown,6379是redis服务运行在Linux上的端口号
在这里插入图片描述

第三步:搭建redis分片(这里的redis分片由三台redis服务器组成,端口号分别是6379,6380,6381)为了方便管理redis分片,在redis目录下创建一个新的文件夹shards,这个文件名shads和在springboot项目中使用redis分片对象的类名差不多。
在这里插入图片描述

第四步:将redis的conf文件复制三份,文件名 分别是6379.conf,6380.conf,6381.conf
使用的linux命令是:cp 文件名 复制后新的文件
查看相关文件
cd shard
ls
在这里插入图片描述

第五步:修改复制后文件的端口号,三个端口号表示这是三个redis服务器
分别修改6380.conf,6381.conf文件中的端口号,修改成6380,6381
在这里插入图片描述
vim 6380.conf
第92行修改redis的端口号

第六步:修改完成配置文件之后,去启动redis分片
启动redis服务的命令是 redis-server 端口号.conf
在这里插入图片描述
第七步:启动之后去检查是否启动成功
先是检查redis的相关服务
再去启动redis的客户端(先启动了redis服务后,在打开客户端)
redis-cli -p 端口号.conf
在这里插入图片描述
Redis入门案例

@SpringBootTest
public class TestRedisShards {
/**
* 由java程序远程操作redis分片,redis分片目的为了进行redis内存的扩容
* 组成redis分片的3台redis服务器存储的数据是不一样的,每个数据只能去选择一台redis进行数
据的存储
*/
@Test
public void test() {
List<JedisShardInfo> shards=new ArrayList<JedisShardInfo>();
shards.add(new JedisShardInfo("192.168.126.129", 6379));
shards.add(new JedisShardInfo("192.168.126.129", 6380));
shards.add(new JedisShardInfo("192.168.126.129", 6381));
ShardedJedis jedis=new ShardedJedis(shards);
jedis.set("shards", "hello~shards");
System.out.println(jedis.get("shards"));
}
}

SpringBoot整合Redis分片
1编辑redis.properties配置文件

#配置redis分片
redis.shards=192.168.126.129:6379,192.168.126.129:6380,192.168.126.129:6381

2编辑RedisConfig配置类

@Configuration
//执行代码的主体是jt-manage项目
@PropertySource("classpath:/properties/redis.properties")
public class RedisConfig {
@Value("${redis.shards}")
private String nodes;//node,node,node
//spring整合redis分片机制
@Bean
public ShardedJedis shardedJedis() {
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
String[] nodeArray = nodes.split(",");
for (String node : nodeArray) {//host:port
String host = node.split(":")[0];
int port=Integer.parseInt(node.split(":")[1]);
JedisShardInfo info =new JedisShardInfo(host, port);
shards.add(info);
}
return new ShardedJedis(shards);
}
}

3修改RedisAOP
说明:注入redis分片
在这里插入图片描述
缺点:
1.由于redis分片机制中的每台redis服务器存储的数据都不一致,而且没有实现高可用(故障自动迁移),所以最终很有可能造成一部分数据丢失。
2.组成redis分片机制中的任意一台redis如果宕机,会导致整个Redis分片崩溃。

02.预备redis宕机的哨兵处理
在这里插入图片描述
第一步:复制哨兵的配置文件sentinel.conf文件到sentinel目录中。
在这里插入图片描述

第二步:编辑sentinel.conf。
在这里插入图片描述

关闭保护模式:
在这里插入图片描述

开启后台启动:
在这里插入图片描述
第三步:配置哨兵监听(sentinel.conf)
说明:哨兵所监听的主机ip(192.168.126.129) 端口号(6379) 以及票数(1)
在这里插入图片描述
第四步:修改哨兵选举主机的时间 10s
在这里插入图片描述

第五步:修改选举失败的超时时间 20s

在这里插入图片描述

第六步:退出编辑模式,保存退出。
linux命令 按esc
后使用:wq
第七步:启动redis哨兵
在这里插入图片描述

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

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

相关文章

瑞吉外卖 - 菜品信息分页查询功能(17)

某马瑞吉外卖单体架构项目完整开发文档&#xff0c;基于 Spring Boot 2.7.11 JDK 11。预计 5 月 20 日前更新完成&#xff0c;有需要的胖友记得一键三连&#xff0c;关注主页 “瑞吉外卖” 专栏获取最新文章。 相关资料&#xff1a;https://pan.baidu.com/s/1rO1Vytcp67mcw-PD…

开源大语言模型完整列表

Large Language Model (LLM) 即大规模语言模型&#xff0c;是一种基于深度学习的自然语言处理模型&#xff0c;它能够学习到自然语言的语法和语义&#xff0c;从而可以生成人类可读的文本。 LLM 通常基于神经网络模型&#xff0c;使用大规模的语料库进行训练&#xff0c;比如使…

【Linux进阶之路】基本指令(下)

文章目录 一. 日志 date指令——查看日期基本语法1基本语法2cal指令——查看日历常见选项 二 .find——查找文件常用选项-name显示所有文件显示指定类型的文件 三.grep——行文本过滤工具语法常见的用法补充知识——APP与服务器的联系 四.打包压缩与解压解包zip与unzipzipunzip…

又一高速AD/DA数据采集卡问世,何不了解一下?

FMC190 子卡集成 2 通道 3Gsps 采样率&#xff0c;14 位 AD&#xff0c;2 通道12.8Gsps 16 位DA。板载时钟芯片 HMC7044&#xff0c;可以提供JESD204B所需要的各种时钟。具有同步/触发功能&#xff0c;模拟信号采用 SSMA 射频连接器输入和输出。板载时钟芯片为 HMC7044&#xf…

Unity UI -- (3)管理屏幕大小和锚点

在前面我们探索了一些基本的文本格式。我们需要考虑一个问题&#xff0c;这个文本在屏幕大小发生变化时该如何适应呢&#xff1f; 在Unity中&#xff0c;我们可以使用Canvas和Anchor Point&#xff08;锚点&#xff09;系统来确保UI元素总是出现在正确的位置&#xff0c;不管它…

Arduino ESP32的串口

Arduino的ESP32的三个串口 ESP32的三个串口 在Arduino的核心中有三个串口&#xff0c;分别是Serial&#xff0c;Serial1&#xff0c;和Serial2. 当然ESP32也可以使用软串口。但硬件串口更稳健&#xff08;我这样理解&#xff09;。但Serial1这个串口不能使用&#xff0c;因为…

腾讯云轻量应用服务器公网带宽速度如何?

腾讯云轻量应用服务器网速怎么样&#xff1f;轻量应用公网IP带宽速度与地域有关&#xff0c;中国大陆地域如北京、上海、广州等地域采用多线BGP网络&#xff0c;保障轻量应用服务器的速度&#xff0c;中国香港国际CN2高速网络。中国内地的地域大家是完全不用担心&#xff0c;大…

Eureka实战入门

spring cloud的版本 spring cloud的版本是根据springboot版本确定的 Spring Cloud Dalston, Edgware, Finchley, and Greenwich 版本不再更新了 版本 SNAPSHOT&#xff1a;开发版本&#xff0c;最新版本 Milestone&#xff1a;大版本在发布前的里程碑的版本 Release candi…

usb摄像头驱动-core层hub.c

usb摄像头驱动-core层hub.c 文章目录 usb摄像头驱动-core层hub.cusb_hub_inithub_probehub_eventport_eventhub_port_connect_changehub_port_connectusb_new_deviceannounce_device 在USB摄像头驱动中&#xff0c;hub.c文件扮演着USB集线器&#xff08;Hub&#xff09;驱动的角…

<数据结构>顺序表和链表的比较|缓存命中率

&#x1f4ad;前言&#xff1a;通过之前对顺序表和链表的实现&#xff0c;我们可以发现在增删查改某些操作上两者的效率前言有所差异&#xff0c;本篇文章将总结二者的异同。 顺序表的实现http://t.csdn.cn/Lxyg2单链表的实现http://t.csdn.cn/rHgjG双链表的实现http://t.csdn.…

国考省考行测:现期比重,基期比重

国考省考行测&#xff1a; 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xff0c;我讲一起屡屡申论和行测的重要知识点 遇到寒冬&am…

【c++】位图与布隆过滤器

一.位图 1.位图的概念 给 40 亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在 这 40 亿个数中。【腾讯】 刚开始许多同学能想到的方法有&#xff1a; 1. 遍历&#xff0c;时间复杂度 O(N) 2. 排序 (O(NlogN)) &#x…

分代回收工作流程

GC回收算法之分代回收 GC回收垃圾主要有三个算法&#xff0c;分别是标记清除&#xff0c;复制算法以及标记整理。 三种算法各有优缺点&#xff0c;其中标记清除的优点就是简单高效&#xff0c;缺点就是很容易带来内存碎片化问题。 复制算法的话&#xff0c;优点确实解决了内存碎…

springcloud-alibaba (02)nacos学习笔记

nacos 一&#xff0c;介绍1. 什么是Spring Cloud Alibaba Nacos2. Nacos的特点和优势 二&#xff0c;安装和配置三&#xff0c;创建项目第一步&#xff0c;创建父工程第二步&#xff0c;创建基础公共模块第三步&#xff0c;创建服务模块第四步&#xff0c;开启多个实例 四&…

用Python进行AB测试之T检验的案例学习【文末源码地址】

文章目录 案例背景假设检验解读一、提出假设二、检验统计量三、代码实现四、结论 源码地址 案例背景 产品经理对APP做了许多改动&#xff0c;想要通过AB测试评估一下改动后的效果如何&#xff1f; 其中有一项评估是&#xff1a;签到按钮从蓝色改为红色后&#xff0c;客户点击…

Java 成员变量与局部变量有什么区别?

节选自JavaGuide(Github 标星 134k star!「Java学习 + 面试指南」一份涵盖大部分 Java 程序员所需要掌握的核心知识) 语法形式:从语法形式上看,成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可以被 public,private,static 等修饰符…

Smart HTML Elements Crack

Smart HTML Elements Crack Smart HTML Elements是一个现代的Vanilla JS和ES6库以及下一代前端框架。企业级Web组件包括可访问性功能(WAI-ARIA&#xff0c;第508/WTAG法规遵从性)、本地化、从右到左键盘导航和主题化。与Angular、ReactJS、Vue.js、Bootstrap、Meteor和任何其他…

vue编写组件 根据指定日期获取一周内所有 日期与农历日期展示 并标记当天

首先 我们要引入一下对应的第三方依赖 npm install --save chinese-lunar-calendar sass sass-loader这里 我们需要 chinese-lunar-calendar 将日期变成农历日期的工具 sass是因为 我这里为了方便 用了 sass写样式 组件代码如下 <template><headerclass "ske…

学习自动化这3个坏习惯要你命,90%测试人躺枪!

将自动化测试当成很了不起的资本&#xff0c;源于国内对Coding的崇拜 盲目的学习自动化&#xff0c;不光对你的工作没有帮助&#xff0c;可能对你的测试之路还会起反作用&#xff01; 1,为什么说盲目学习自动化可能会让你一无是处&#xff1f; 没有全面理解软件测试的基本原理…

让自己再认识一下分区吧

在上个博客中&#xff0c;我们讨论了复制 —— 即数据在不同节点上的副本&#xff0c;对于非常大的数据集&#xff0c;或非常高的吞吐量&#xff0c;仅仅进行复制是不够的&#xff1a;我们需要将数据进行 分区&#xff08;partitions&#xff09;&#xff0c;也称为 分片&#…