redis-集群(基础了解)

news2024/11/15 23:55:42

前言

为什么要做集群?解决什么问题?

1、避免单点故障,实现高可用;就需要数据沉余,通过沉余副本也是slave。

三种集群区别?

1、主从复制

复制策略 --> 全量复制

第一次连接到master,master生成最新的rdb文件同步到子节点上

如果子节点上有数据,则清除子节点上的所有数据,同步rdb文件到子节点

--> 增量复制

已经连接过master,通过子节点的偏移量记录的下需要从那个位置开始同步

缺点: --> 如果节点down,需要手动重启,没有解决高可用

选举: --> 如果主节点down了; 1、各个节点看下谁的偏移量大,谁就成为master,如果偏移量都相同,则看redis进程mid谁最小,谁最小就是成为master

复制过程: 单从节点执行指令slaveof masterIp masterPort后,从节点就定时任务的发现主节点的信息,并建立socket连接, 从节点会发送ping执行给主节点,而主节点pong回应. 确认连接后,主节点开始同步数据到从节点,已rdb形式发送到从节点。(全量复制和增量复制了,如上)

存在的问题:

1、主节点是属于单机形式(写和存储)

2、注解点宕机后,需要人工重启

3、如果主节点发送数据到从节点同步失败,从节点发出psync指令。可能全出现全量同步,而从节点,可能出现卡顿现象

1-1、主从复制配置

在从节点redis.config 中配置

slaveof 主节点ip 主节点端口

masterauth 主节点如果配置了密码,需要增加密码配置

配置一主两从(一windows为列),我这里是使用5.0版本

1、如下:

2、配置主节点 (暂时不往优化上靠,随意部署起来)

3、配置6380节点 使用5.0版本,5.0一下应该使用slaveof配置

4、 在redis.config配置主节点,这里是一主两从,两个从节点配置主节点

5、./redis-service redis.config

2、哨兵集群

主要功能:存活检测,主从情况检测,自动故障转移,主从切换

Sentinel 哨兵机制: 本质上是运行在特殊模式下的redis,通过info指令也监控redis,哨兵也是特殊的Redis,有着订阅发布的功能,会通过_sentinel_:hello 发送消息进行监控

服务下线 -- > 主观下线 --> 默认以每秒一次的频率发送Ping命令,没有收到有效回复,sentinel会把该服务器标记为下

--> 客观下线 --> 发现master下线的Sentinel节点会继续询问其他Sentinel节点, 大多数Sentinel认为下线

,master才真正确认被下线

选举机制 --> 哨兵选举 --> 采用类似raft算法

redis选举 --> 查看主从复制

客户端连接 --> 一致性哈希,一个哈希环,但是节点可能存在分布不均,节点down后,数据需要重新

同步到其他节点中, 所以这里要引入虚拟节点.虚拟节点执行真是节点

2-1、哨兵配置

在主从复制基础上增加哨兵配置

在每个节点下配置哨兵配置

启动哨兵

./redis-service sentinal.config --sentinal

3、redis-cluster集群

由多个Redis 实例组成的数据集合。客户端不需要关注数据的子集到底存储在哪个节点,只需要关注这个集合整体

Redis创建了16384个槽(slot),每个节点负责一定区间的slot

对 key 用CRC16算法计算再模以16384,得到一个slot的值,数据落到负责这个slot的Redis节点上

特点:无中心架构

可动态调整数据分布

可扩展性

高可用性

降低运维成本

3-1、集群配置

1、在哨兵的基础上,删除主从复制配置。

2、在每个节点上开启集群配置。如下配置:

3、启动所有节点配置

./redis.service redis.config

4、在任务节点上执行

./redis-cli.exe --cluster create 127.0.0.1:6379 127.0.0.1:6479 127.0.0.1:6380127.0.0.1:6480 127.0.0.1:6381 127.0.0.1:6481 --cluster-replicas 1

--cluster: 集群配置

create:创建集群节点

--cluster-replicas 1 , 1表示一主一从 127.0.0.1:6379 127.0.0.1:6479 为一组

这里配置就是三主三从

如果配置2,表示一主而从

5、注意:节点必须是单数,也就是必须是3个节点以上。

4、客户端

因为不同的配置,会有不同的客户端设置。copy + c

1、redisTemplate是基于某个具体实现的再封装,比如说springBoot1时,具体实现是jedis;

而到了springBoot2.x时,具体实现变成了lettuce。封装的好处就是隐藏了具体的实现,使调用更简单,

但是有人测试过jedis效率要10-30倍的高于redisTemplate的执行效率,所以单从执行效率上来讲,

jedis完爆redisTemplate。redisTemplate的好处就是基于springBoot自动装配的原理,

使得整合redis时比较简单。

2、jedis作为老牌的redis客户端,采用同步阻塞式IO,采用线程池时是线程安全的。

优点是简单、灵活、api全面,

缺点是某些redis高级功能需要自己封装。

3、lettuce作为新式的redis客户端,基于netty采用异步非阻塞式IO,是线程安全的,

优点是提供了很多redis高级功能,例如集群、哨兵、管道等,

缺点是api抽象,学习成本高。lettuce好是好,但是jedis比他生得早。

4、redission作为redis的分布式客户端,同样基于netty采用异步非阻塞式IO,是线程安全的,

优点是提供了很多redis的分布式操作和高级功能,

缺点是api抽象,学习成本高。

1、主从复制

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

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

相关文章

Mysql整理一 基础知识/常见面试题

一、基础概念 1. 索引 之前的文章已经写过了,比较细 数据库索引含义,类别,用法,创建方式_表结构加树形id和索引是为什么_马丁•路德•王的博客-CSDN博客 简单概括就是在表的某个列或者多个列或者联合表的时候加个索引,类似图书馆书本的索引编号&…

git环境超详细配置说明

一,简介 在git工具安装完成之后,需要设置一下常用的配置,如邮箱,缩写,以及git commit模板等等。本文就来详细介绍些各个配置如何操作,供参考。 二,配置步骤 2.1 查看当前git的配置 git conf…

pyqt5 第一个程序

import sys from PyQt5.QtWidgets import QApplication, QWidgetif __name__ __main__:# 创建 QApplication 实例app QApplication(sys.argv)# 创建一个主窗口w QWidget()# 设置大小w.resize(400, 200)# 设置窗口标题w.setWindowTitle(第一个程序)# 显示窗口w.show()# 固定写…

Arcgis连续数据的分类(求不同值域的面积)

问题描述:如果得到的一个连续的影响数值数据,但是我们想求取某一段值域的面积占比,需要进行以下操作: 1.按照数值重分类,将某段数值变成一个类别 2.栅格转矢量,再求取面积

第7章:贝叶斯分类器

贝叶斯决策论 贝叶斯分类器:使用贝叶斯公式 贝叶斯学习:使用分布估计(不同于频率主义的点估计) 极大似然估计 朴素贝叶斯分类 半朴素贝叶斯 条件独立性假设,在现实生活中往往很难成立。 半朴素贝叶 斯的一个常用策略…

学习ts(四)联合类型、交叉类型、类型断言

联合类型 使用联合类型定义属性和方法,只要符合其中一种即可 let myPhone: string | number 010-7788 // let myPhone1: string | number true 因为没有包含boolean值 会报错const fn (something: number | boolean): boolean > {return !!something }con…

Android Studio 之 Android 中使用 HanLP 进行句子段落的分词处理(包括词的属性处理)的简单整理

Android Studio 之 Android 中使用 HanLP 进行句子段落的分词处理(包括词的属性处理)的简单整理 目录 Android Studio 之 Android 中使用 HanLP 进行句子段落的分词处理(包括词的属性处理)的简单整理 一、简单介绍 二、实现原理…

Python入门【装饰器​编辑、多个装饰器 、带参数的装饰器、生成器、 生成器定义、 迭代器】(二十八)

👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…

教你10分钟快速上手Docker基础操作

一、docker平台组成 docker最核心的组件是:镜像、容器、仓库 二、常用基础命令 1、镜像操作 (1)拉取镜像 查找指定镜像:docker search 镜像名字 [rootclient ~]# docker search centos NAME …

VirtualBox安装CentOS8.5

0 环境 win10 virtualbox版本 版本 7.0.10 r158379 (Qt5.15.2) 1.镜像下载 阿里镜像站 https://developer.aliyun.com/mirror/ 1.1 找到安装包下载地址 1.2 找到8.5版本 1.3 iso 再然后 1.4 选择安装包 我这里选的是最小安装包,centOS8.5最小安装版本&#…

【边缘设备】yolov5训练与rknn模型导出并在RK3588部署~4.导出模型(亲测有效)

保姆级教程,看这一篇就够用了。 在翻阅了网络上很多资料后,发现很多版本的信息比匹配。 花了一周的时间配置环境,以及环境验证,然后写了这篇长文。 有过程,有代码,有经验,欢迎大家批评指正。 一…

linux部署kafka3.5.1(单机)

一、下载jdk17 kafka3.x版本需要jdk11以上版本才能更好的兼容,jdk11、jdk17都是LTS长期维护版本,而且jdk17支持springboot3.x,所以我选择了openjdk17。 下载地址: Archived OpenJDK GA Releaseshttps://jdk.java.net/archive/ 二、上传jdk安装包解压 …

Linux 终端会话中,启动任务并放到后台运行

一、需求 linux要执行一个脚本,耗时很长,想要脚本在后台运行,用户注销或终端软件关闭时也可以继续运行。 二、实现 1、nohup命令 脚本在后台运行 nohup 是在 Linux 和类 Unix 系统中使用的一个命令,用于在后台运行程序&#x…

【ES6】—解构赋值

一、定义 解构赋值:解构赋值就是一种模式的匹配,只要等号两边的模式完全相同的,那么左边的变量就会被赋值对应右边的值 二、数组的解构赋值 PS:数组解构赋值时,是通过索引的唯一性赋值的 1. 一维数组解构赋值 (1)…

亿赛通电子文档安全管理系统任意文件上传漏洞(2023-HW)

亿赛通电子文档安全管理系统任意文件上传漏洞 一、 产品简介二、 漏洞概述三、 影响范围四、 复现环境五、 漏洞复现小龙POC检测 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果…

ADIS16470和ADIS16500从到手到读出完整数据,附例程

由于保密原因,不能上传我这边的代码,我所用的开发环境是IAR, 下边转载别的博主的文章,他用的是MDK 下文的博主给了你一个很好的思路,特此提出表扬 最下方是我做的一些手册批注,方便大家了解这个东西 原文链…

Github下载任意版本的VsCode

下载历史版本VsCode(zip) 下载链接由三部分组成: 固定部分commit idVSCode-win32-x64-版本号.zip 固定部分: https://vscode.cdn.azure.cn/stable/ Commit id: 打开 vscode的GitHub:[https://github.com/microsoft/vscode/r…

Code interpreter生成无聊的APP:病理图像切割和提取

一、写在前面 机器学习100步不够分配了,所以开个新专栏,就叫做《Code interpreter生成无聊的APP》,旨在探索GPT-4官方插件Code interpreter的使用心路历程。 主要灵感来源:听户主说,她们在做病理组学图像标注和分割的…

作品集封面这样设计,提升个人竞争力!

随着毕业季、求职季陆陆续续的到来,许多毕业生和求职者都将踏上找工作的道路。作品集作为敲门砖,对设计师来说非常重要。而一套完整的作品集自然少不了一张精致吸睛的个人作品集封面,作品集封面的质量直接影响了整套作品的效果。那么&#xf…

Spring Clould 注册中心 - Eureka,Nacos

视频地址:微服务(SpringCloudRabbitMQDockerRedis搜索分布式) Eureka 微服务技术栈导学(P1、P2) 微服务涉及的的知识 认识微服务-服务架构演变(P3、P4) 总结: 认识微服务-微服务技…