redis-4 搭建redis集群

1.为什么需要redis集群?

Redis 集群提供了高可用性、横向扩展和数据分片等功能,使得 Redis 能够应对大规模的数据存储和高并发访问的需求。以下是一些需要使用 Redis 集群的常见情况:

  1. 高可用性:通过在多个节点之间进行数据复制和故障转移,Redis 集群能够保证即使出现节点故障也能够保持系统的可用性。这是因为即使某个节点不可用,仍然可以从其他节点获取相同的数据。

  2. 横向扩展:当单个 Redis 实例无法满足系统的性能需求时,可以通过增加更多的节点来扩展整个集群的性能和容量。这种方式称为横向扩展,可以通过增加节点来增加集群的总体容量和吞吐量,从而满足系统的需求。

  3. 数据分片:Redis 集群支持将数据分片存储在不同的节点上,以便有效地管理大规模的数据集。通过数据分片,可以将数据均匀地分布在多个节点上,从而降低单个节点的负载和提高系统的整体性能。

总的来说,Redis 集群能够提供高可用性、横向扩展和数据分片等功能,使得 Redis 能够适应大规模的数据存储和高并发访问的需求。

2. 搭建集群

2.1配置集群所需要的环境

我们现在介绍的是伪集群,当然真实情况跟这样差不了多少

Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。

要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。因为我没有那么多服务器,也启动不了那么多虚拟机,所在这里搭建的是伪分布式集群,即一台服务器虚拟运行6个redis实例,修改端口号为(7001-7006),当然实际生产环境的Redis集群搭建和这里是一样的。

2.2配置六台伪服务器

2.2.1创建他们的目录

2.2.2修改配置文件

2.2.2.1在7001目录下创建配置文件

vim redis.conf

2.2.2.2修改配置文件
include /usr/java/redis/redis-5.0.14/redis.conf
port 7001
pidfile "/var/run/redis_7001.pid"
dbfilename "dump_7001.rdb"
dir "/usr/myredis/7001"
logfile "/usr/myredis/7001/redis_err_7001.log"
bind 0.0.0.0
protected-mode no
daemonize yescluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000
2.2.2.3把这个配置文件复制给另外几个文件夹
echo ./7002 ./7003 ./7004 ./7005 ./7006 | xargs -n 1 cp -v /usr/java/redis_cluster/7001/redis.conf

2.3搞一个一键启动

编写一个shell脚本

#!/bin/bash
/usr/local/bin/redis-server /usr/local/myredis/7001/redis.conf
/usr/local/bin/redis-server /usr/local/myredis/7002/redis.conf
/usr/local/bin/redis-server /usr/local/myredis/7003/redis.conf
/usr/local/bin/redis-server /usr/local/myredis/7004/redis.conf
/usr/local/bin/redis-server /usr/local/myredis/7005/redis.conf
/usr/local/bin/redis-server /usr/local/myredis/7006/redis.conf

bash stredis.sh 一键启动各个服务

2.4创建redis的集群

/usr/local/bin/redis-cli --cluster create 192.168.37.33:7001 192.168.37.33:7002 192.168.37.33:7003 192.168.37.33:7004 192.168.37.33:7005 192.168.37.33:7006 --cluster-replicas 1

2.5使用cli连接redis集群

-c   cluster

-h  主机ip

-p   端口号

/usr/java/redis/bin/redis-cli -c -h 192.168.159.34 -p 7002

2.6查询集群状态

只有进入节点中cli 才可以查看集群状态

3.新增主节点

3.1新建文件夹及复制配置文件

3.2添加节点

/usr/local/bin/redis-cli --cluster add-node 192.168.37.33:7007 192.168.37.33:7001

 3.3分配槽slot

新添加的节点为主节点 但是slot为0,没有卵用

给他再分配一下从节点

/usr/local/bin/redis-cli --cluster add-node 192.168.37.33:7008 192.168.37.33:7002 --cluster-slave --cluster-master-id 7dfb72f66759e044b36b3431e8dcd0b366bc62b1

yes即可

4.slot槽

4.1在集群中录入值

不在一个slot下的键值,是不能使用mget,mset等多键操作

将他们设置一个组,才能存进去

5.删除从节点

从节点只读数据没有槽

 /usr/local/bin/redis-cli --cluster del-node 192.168.37.33:7001 5b6ca7235628db7a3d534ad8158a95b1b034e0e5

5.1删除完检查节点状态

 /usr/local/bin/redis-cli --cluster check 192.168.37.33:7003

已经没有7008节点了
5.2删除主节点

5.2.1归还槽

5.2.2删除节点

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

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

相关文章

【动态规划】【逆向思考】【C++算法】960. 删列造序 III

作者推荐 【动态规划】【map】【C算法】1289. 下降路径最小和 II 本文涉及知识点 动态规划汇总 LeetCode960. 删列造序 III 给定由 n 个小写字母字符串组成的数组 strs ,其中每个字符串长度相等。 选取一个删除索引序列,对于 strs 中的每个字符串&a…

虹科数字化与AR部门升级为安宝特AR子公司

致关心虹科AR的朋友们: 感谢您一直以来对虹科数字化与AR的支持和信任,为了更好地满足市场需求和公司发展的需要,虹科数字化与AR部门现已升级为虹科旗下独立子公司,并正式更名为“安宝特AR”。 ”虹科数字化与AR“自成立以来&…

React中文官网已经搬迁了,原网址内容将不再更新

注意1:React中文官网已经搬迁至-React 官方中文文档,原网址内容将不再更新 注意2:React官网已经将React的定义由“用于构建用户界面的 JavaScript 库”更改为“用于构建 Web 和原生交互界面的库”。

SpringBoot系列之JPA实现按年月日查询

SpringBoot系列之JPA实现按年月日查询 通过例子的方式介绍Springboot集成Spring Data JPA的方法,进行实验,要先创建一个Initializer工程,如图: 选择,需要的jdk版本,maven项目 选择需要的maven配置&#x…

Python初学者学习记录——python基础综合案例:数据可视化——地图可视化

一、基础地图使用 1、基础地图演示 2、基础地图演示——视觉映射器 from pyecharts.charts import Map from pyecharts.options import VisualMapOpts# 准备地图对象 map Map() # 准备数据 data [("北京市", 99),("上海市", 199),("湖南省", 2…

高考复习技巧考研资料、美赛论文及代码,数据收集网站(初高中招生考试全科试卷等)

图,就要从“点、线、面的位置关系”这一内核开始发散,第一层级为彼此的位置关系,平行、相交、异面(两直线间位置)、垂直(相交或异面中的特殊位置),多面体、旋转体等,然后…

基于springboot+vue的在线教育系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

使用Opencv-python库读取图像、本地视频和摄像头实时数据

使用Opencv-python库读取图像、本地视频和摄像头实时数据 Python中使用OpenCV读取图像、本地视频和摄像头数据很简单, 首先需要安装Python,然后安装Opencv-python库 pip install opencv-python然后在PyCharm或者VScode等IDE中输入对应的Python代码 一…

leetcode:二叉树的中序遍历(外加先序,后序遍历)

题外:另外三种遍历可以看这: 层序遍历: Leetcode:二分搜索树层次遍历-CSDN博客 先序遍历: 二叉树的先序,中序,后序遍历-CSDN博客 后序遍历: 二叉树的先序,中序,后序…

黑马程序员-瑞吉外卖-day5

修改实体类 package com.itheima.reggie.entity;import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode;i…

Python算法题集_接雨水

本文为Python算法题集之一的代码示例 题目42:接雨水 说明:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1]…

VMware虚拟机部署Linux Ubuntu系统

本文介绍基于VMware Workstation Pro虚拟机软件,配置Linux Ubuntu操作系统环境的方法。 首先,我们需要进行VMware Workstation Pro虚拟机软件的下载与安装。需要注意的是,VMware Workstation Pro软件是一个收费软件,而互联网中有很…

Windows10上通过MSYS2编译FFmpeg 6.1.1源码操作步骤

1.从github上clone代码,并切换到n6.1.1版本:clone到D:\DownLoad目录下 git clone https://github.com/FFmpeg/FFmpeg.git git checkout n6.1.1 2.安装MSYS2并编译FFmpeg源码: (1).从https://www.msys2.org/ 下载msys2-x86_64-20240113.exe &#…

【揭秘】ForkJoinTask全面解析

内容摘要 ForkJoinTask的显著优点在于其高效的并行处理能力,它能够将复杂任务拆分成多个子任务,并利用多核处理器同时执行,从而显著提升计算性能,此外,ForkJoinTask还提供了简洁的API和强大的任务管理机制&#xff0c…

pytorch-metric-learning度量学习工具官方文档翻译

基于Pytorch实现的度量学习方法 开源代码:pytorch-metric-learning官网文档:PyTorch Metric Learning官方文档 度量学习相关的损失函数介绍: 度量学习DML之Contrastive Loss及其变种度量学习DML之Triplet Loss度量学习DML之Lifted Structu…

生信技能树--转录组--个人笔记

这周主要内容是学习转录组的比对,选择的软件为hisat2,该笔记仅供个人参考谨慎搬运代码。 # hisat2 可以快速准确地将测序得到的 RNA 片段(reads)比对到参考基因组,从而确定这些RNA 片段在基因组上的精确位置&#xff…

关于在Ubuntu20.04(ROS1 noetic)中使用catkin_make编译时发生的与pyhton版本不兼容的问题解决办法

今天在另外一台电脑上操作复现【ROS建模:一起从零手写URDF模型】这个博客时,发生了一些问题,特此记录下来 【ROS建模:一起从零手写URDF模型】链接:https://blog.csdn.net/qq_54900679/article/details/135726348?spm…

redis-主从复制

1.主从复制 1.1简介 主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 1.2作用 1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。 2、故…

C++初识类和对象

目录 1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1访问限定符4.2封装 5.类的作用域6.类的实例化7.类的对象大小的计算7.1如何计算类对象的大小7.2类对象的存储方式猜测 7.3 结构体内存对齐规则8.类成员函数的this指针8.1 this指针的引出8.2this…

【C++入门到精通】特殊类的设计 |只能在堆 ( 栈 ) 上创建对象的类 |禁止拷贝和继承的类 [ C++入门 ]

阅读导航 引言一、特殊类 --- 不能被拷贝的类1. C98方式:2. C11方式: 二、特殊类 --- 只能在堆上创建对象的类三、特殊类 --- 只能在栈上创建对象的类四、特殊类 --- 不能被继承的类1. C98方式2. C11方法 总结温馨提示 引言 在面向对象编程中&#xff0…