Redis集群模式

news2024/12/23 16:57:33

目录

前言

一、集群的作用

二、集群模式的数据分片

三、集群模式的主从复制模型

四、Redis集群模式

Redis集群部署

 开启群集功能

修改所有集群服务的配置文件端口,使其不一致 

启动集群

集群测试 


 

前言

1、集群,即 Redis Cluster, 是Redis 3. 0开始引入的分布式存储方案。
2、集群由多个节点(Node) 组成,Redis 的数据分布在这些节点中。
3、集群中的节点分为主节点和从节点;只有主节点负责读写请求和集群信息的维护;从节点只进

行主节点数据和状态信息的复制。

一、集群的作用

①数据分区:数据分区(或称数据分片) 是集群最核心的功能。

集群将数据分散到多个节点,一方面突破了 Redis 单机内存大小的限制,存储容量大大增加;
另一方面每个主节点都可以对外提供读服务和写服务,大大提高了集群的响应能力。
Redis 单机内存大小受限问题,在介绍持久化和主从复制时都有提及;
例如,如果单机内存太大,bgsave 和 bgrewriteaof的 fork 操作可能导致主进程阻塞,主从环境下主机切换时可能导致从节点长时间无法提供服务,全量复制阶段主节点的复制缓冲区可能溢出。

②高可用:集群支持主从复制和主节点的自动故障转移(与哨兵类似) ;当任一节点发生故障时,集群仍然可以对外提供服务。

二、集群模式的数据分片

1、Redis集群引入了哈希槽的概念
2、Redis集群有 16384 个哈希槽( 编号0-16383)
3、集群的每个节点负责一部分哈希槽
4、每个Key 通过 CRC16校验后对16384取余来决定放置哪个哈希槽,通过这个值,去找到对应的插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作

三、集群模式的主从复制模型

<- - -以3个节点组成的集群为例- - ->
节点A 包含0到5460号哈希槽
节点B 包含5461到10922号哈希槽
节点C 包含10923到16383号哈希槽

1、集群中具有A、B、C三个节点,如果节点B失败了,整个集群就会因缺少5461-10922这个范围的槽而不可以用。
2、为每个节点添加一个从节点A1、B1、C1整个集群便有三个Master节点和三个slave节点组成,在节点B失败后,集群选举B1位为主节点继续服务。当B和B1都失败后,集群将不可用。

四、Redis集群模式

Redis集群部署

Redis集群一般需要6个节点,3主3从。
这里使用一个服务器,模拟三主三从

#在当前服务器配置6个redis服务
cd /etc/redis/
mkdir -p /etc/redis/redis-cluster/redis600{1…6}
cd redis-cluster/redis6001
#复制配置文件及程序到目录中
cp /opt/redis-5.0.7/redis.conf ./
cp /opt/redis-5.0.7/src/redis-cli ./
cp /opt/redis-5.0.7/src/redis-server ./

 开启群集功能


vim redis.conf
69 #bind 127.0.0.1 #将其注释,即监听所有端口
88 protected-mode no #关闭保护模式
92 port 6001 #为了区分,将端口更改,6个不能相同
136 daemonize yes #开启守护进程
699 appendonly yes #开启AOF持久化
832 cluster-enabled yes #开启集群功能
840 cluster-config-file nodes-6001.conf #群集名称文件设置
846 cluster-node-timeout 15000 #群集超时时间设置

将配置好的文件复制到其余目录中 


for i in {2…6};do
cp ./* /etc/redis/redis-cluster/redis600$i
done

 

修改所有集群服务的配置文件端口,使其不一致 

for n in {2..6};do
sed -i '92s/6001/600'$n'/' /etc/redis/redis-cluster/redis600$n/redis.conf
sed -i '840s/6001/600'$n'/' /etc/redis/redis-cluster/redis600$n/redis.conf
done

启动redis节点 


#分别进入6个节点,进行服务启动redis-server redis.conf
for m in {1…6};do
cd /etc/redis/redis-cluster/redis600$m/
redis-server redis.conf
done

启动集群

redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1
-replicas 1 表示每个主节点有1个从节点
若使用6台服务器,此处节点ip请换为自己真实ip即端口号

集群测试 

 

redis-cli -p 6001 -c
#-c 参数,节点之间可以相互跳转
cluster slots  
#查看节点的哈希槽编号范围
cluster keyslot 键名
#查看键的哈希槽编号

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

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

相关文章

模型效果差?我建议你掌握这些机器学习模型的超参数优化方法

模型优化是机器学习算法实现中最困难的挑战之一。机器学习和深度学习理论的所有分支都致力于模型的优化。 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数。超参数与一般模型参数不同&#xff0c;超参数是在训练前提前设置的。举例来说&a…

CKA考试Tips

前言 今年黑五的双证套餐的折扣比双11时还便宜个200多,不到2000&#xff0c;应该是史低吧,反正比前年低。即使考试前看了各种避坑技巧&#xff0c;虽然通过了但是结果还是因为各种问题导致时间不够没做完扣分&#xff0c;于是下面总结一下参加CKA/CKS考试时候的技巧。 报名及考…

[基因遗传算法]进阶之四:实践VRPTW

参考资料: 《旅行商问题(TSP)、车辆路径问题(VRP,MDVRP,VRPTW)模型介绍》 本文对《基于GA算法解决VRPTW》的分析和思考.具体的代码可以参考 《Python实现(MD)VRPTW常见求解算法——遗传算法&#xff08;GA&#xff09;》 . 文章目录壹、VRPTW一. 定义类二、数据读取三. 构造初…

JVM调优手段

JDK提供命令工具 jstat 是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据&#xff0c;在没有 GUI图形界面&#xff0c;只提供了纯文本控制台环境的服务器上&#xff0c;它将是运行期定位虚拟…

博球一看,CSDN与你共观世界杯

2022卡塔尔世界杯不知不觉已接近尾声&#xff0c;不仅让人感叹&#xff0c;乌拉圭&#xff0c;巴西&#xff0c;葡萄牙都已淘汰&#xff0c;四强诞生分别是阿根廷&#xff0c;法国&#xff0c;摩洛哥&#xff0c;克罗地亚&#xff0c;非常期待梅西和魔笛的对决&#xff0c;也希…

电子学会2020年12月青少年软件编程(图形化)等级考试试卷(三级)答案解析

目录 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 二、判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 三、编程题【该题由测评师线下评分】&#xff08;共3题&#xff0c;共30分&#xff09; 青少年软件…

【云计算与大数据技术】虚拟化简介及虚拟化的分类讲解(图文解释 超详细)

一、虚拟化简介 1&#xff1a;什么是虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是在真实的、独立的物理硬件基础上运行。这种以优化资源、简化软件的重新配置过程为目的的解决方案就是虚拟化技术 虚拟化架构就是在一个物理硬件机器上同时运行多个不同应用的独立的虚拟系…

r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现|视频

Glmnet是一个通过惩罚最大似然关系拟合广义线性模型的软件包。正则化路径是针对正则化参数λ的值网格处的lasso或Elastic Net&#xff08;弹性网络&#xff09;惩罚值计算的。 最近我们被客户要求撰写关于LASSO的研究报告&#xff0c;包括一些图形和统计输出。该算法非常快&am…

电子学会2020年12月青少年软件编程(图形化)等级考试试卷(四级)答案解析

目录 一、单选题&#xff08;共15题&#xff0c;每题2分&#xff0c;共30分&#xff09; 二、判断题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 三、编程题【该题由测评师线下评分】&#xff08;共4题&#xff0c;共50分&#xff09; 青少年软件…

51单片机——LED 点阵点亮一个点,小白详解

LED点阵介绍&#xff1a; LED点阵是由发光二极管排列组成的显示器件&#xff0c;在我们生活中的电器中随处可见&#xff0c;被广泛用于汽车报站器&#xff0c;广告屏等。 通常用用较多的是8*8点阵&#xff0c;然后使用多个8*8点阵组成不同分辨率的LED点阵显示屏&#xff0c;比如…

kubernetes--kube-proxy组件深入理解

文章目录kube-proxy的工作原理netfilter的运行机制ipvs和iptables有什么区别&#xff1f;iptables在网络栈的hook点更多&#xff0c;而ipvs的hook点很少iptables的hook点ipvs的hook点如何切换&#xff1f;ipvs安装为何推荐ipvs&#xff1f;为什么iptables或者ipvs在每个节点上都…

面试官:你会几种分布式 ID 生成方案???

1. 为什么需要分布式 ID 对于单体系统来说&#xff0c;主键 ID 常用主键自动的方式进行设置。这种 ID 生成方法在单体项目是可行的&#xff0c;但是对于分布式系统&#xff0c;分库分表之后就不适应了。比如订单表数据量太大了&#xff0c;分成了多个库&#xff0c;如果还采用…

基于java+springboot+mybatis+vue+mysql的福聚苑社区团购

项目介绍 随着互联网的发展&#xff0c;各种团购模式也越来越多&#xff0c;尤其是最近几年的社区团购模式更是如火如荼的在进行着&#xff0c;我了能够让大家品味到更多的瓜果蔬菜&#xff0c;我们通过java语言&#xff0c;springboot框架、前端vue技术、数据库mysql开发了本…

使用Hilt搭建隔离层架构

在我们的日常编码的过程中&#xff0c;常常会遇到这种需求。例如&#xff1a;这个版本我们使用okhttp作为网络通信库&#xff0c;如果下个版本我们想要用volley作为网络通信库&#xff0c;那该怎么办呢&#xff1f;我们总不能对使用okhttp的地方一个个改成volley吧&#xff01;…

上班都在刷的Java八股文,老板都想要一份?

今天心血来潮刷刷牛客看到这&#xff0c;小伙在上班刷八股文被老板逮到&#xff01;真行啊&#xff0c;结果还让他给老板也发一份&#xff0c;感觉过不了多久就跟老板一起提桶跑路了 说到这&#xff0c;我最近也整理了GitHub上高标星的面试八股文&#xff0c;这种金九银十的节骨…

Java并发编程之Condition await/signal原理剖析

Java并发编程之Condition await/signal原理剖析 文章目录Java并发编程之Condition await/signal原理剖析Condition与Lock的关系Condition实现原理await()实现分析signal()实现分析Condition接口与Object监听器的区别Condition与Lock的关系 Condition本身也是⼀个接口&#xff…

OpenStack的简单部署

OpenStack的简单部署 文章目录OpenStack的简单部署一、OpenStack概述二、环境准备三、搭建流程1. 更新 & 升级2. 安装好用的vim VimForCpp3. 安装必要依赖4. 关闭防火墙、核心防护、NetworkManager5. 配置静态IP地址6.配置yum源7. 安装时间同步服务8. 使用packstack 一键部…

C罗老矣,我的程序人生还有多远

☆ 随着12月11号摩洛哥1-0葡萄牙比赛的结束&#xff0c;不仅说明葡萄牙对要结束本届卡塔尔世界杯了&#xff0c;就连C罗此生的世界杯之旅也将画上句号了。 ☆ 37岁的球星本该是人生最璀璨的阶段&#xff0c;但在足球生涯中&#xff0c;这已经是大龄了。不禁让我想到&#xff0c…

机器视觉(五):机器视觉与世界杯

11月22日晚上&#xff0c;球迷再次为阿根廷而惋惜。在当天晚上进行的世界杯小组赛C组首轮比赛中&#xff0c;阿根廷队1:2不敌沙特阿拉伯队&#xff0c;爆出了本届世界杯开赛至今最大的冷门。 天台好冷不仅如此&#xff0c;阿根廷队全场比赛总计被吹罚了10次越位&#xff0c;刷新…

SpringMVC(一) 构建项目

SpringMVC(一) 构建项目 1.创建项目 创建一个空的Maven项目 删除src目录&#xff0c;将新建的项目作为一个工作空间使用&#xff0c;然后在里面创建Module。 2.创建Module 选中刚才创建的项目&#xff0c;右键创建Module 选择Java语言的Maven 项目 3.添加SpringMVC依赖 在…