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.mzph.cn/news/651664.shtml

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

相关文章

计算机网络——TCP协议

💡TCP的可靠不在于它是否可以把数据100%传输过去,而是 1.发送方发去数据后,可以知道接收方是否收到数据;2.如果接收方没收到,可以有补救手段; 图1.TCP组成图 TCP的可靠性是付出代价的,即传输效率…

苹果提审被拒反馈崩溃日志.text | iOS 审核被拒crashLog

iOS审核人员拒绝后每个截图,只给了几个text文件,这种情况就是审核的时候运行你的代码,崩溃了。 仅仅看text文件,是看不出所以然来的,所以我们要将日志转换成.crash格式 1.将.text文件下载下来,将 .text手动…

【Linux】进程间通信概念 | 匿名管道

文章目录 一、什么是进程间通信进程间通信的概念进程间通信的目的进程间通信的分类进程间通信的本质 二、什么是管道三、匿名管道匿名管道的原理✨站在内核角度理解管道✨站在文件描述符角度理解管道 pipe系统调用fork后在父子进程间使用管道通信代码实现 匿名管道的读写规则管…

stable diffusion学习笔记——文生图(一)

模型设置 基本模型 基本模型也就是常说的checkpoint(大模型),基本模型决定了生成图片的主体风格。 如上图所示,基本模型的后缀为.safetensors。需要存放在特定的文件夹下。 如果用的是启动器,可以在启动器内直接下载。…

GPT-SoVITS 本地搭建踩坑

GPT-SoVITS 本地搭建踩坑 前言搭建下载解压VSCode打开安装依赖包修改内容1.重新安装版本2.修改文件内容 运行总结 前言 传言GPT-SoVITS作为当前与BertVits2.3并列的TTS大模型,于是本地搭了一个,简单说一下坑。 搭建 下载 到GitHub点击此处下载 http…

在JavaScript中获取当前时间yyyymmddhhmmss的六种实现方式

在编写JavaScript代码时,遇到需要获取当前日期和时间并将其格式化为 yyyymmddhhmmss 字符串的情况。可以使用本文中介绍的几种实现方式中的任意一种。 方法一:使用Date对象 使用 Date 对象来获取当前日期和时间。 示例代码: const now new D…

NC开发客户端(前端)连接启动失败can‘t connect to server, please wait

效果图 解决方法 IP地址和端口要对应 1-IP地址中间启动,肯定是这个127.0.0.1 2-端口号,要对应中间件启动在控制台输出的端口 或者是在home目录-》bin-》sysConfig.bat这里面的服务器, 里面可以看到对应启动ip地址和端口

Qt使用中文字符串乱码的问题

文章目录 vs编译器下第一种解决方式第二种解决方式 Qt编译器下 我们在使用qt的时候有时候会遇到打印中文字符串的时候出现中文乱码的问题,主要是由于Qt的QString字符串存储的方式是使用utf-8的编码方式,如果我们本地的文件是使用GBK方式的编码再使用中文…

React一学就会(3): 强化练习一

前言 兄弟们点个关注点点赞,有什么建议在评论里留言说一下,一定要和我多多互动啊,这样我才有动力创作出更有品质的文章。 这节课我们用前两节课的知识做一个实践,在实战中巩固我们所学。本来我想借用官方的示例翻译一下&#xf…

数据库操作

数据库操作 1、 表之间连接 MYSQL 题 1、取第二高薪2、取第N高薪3、分数排名 inner join:2表值都存在 outer join:附表中值可能存在null的情况。 总结: ①A inner join B:取交集 ②A left join B:取A全部&#…

Vue深入学习4—指令和生命周期

1.Vue是怎么识别 v- 指令的? 首先将HTML结构解析成属性列表,存入到数组中,接着遍历数组中的每一个节点,获取到不同指令对应的方法。 // 将HTML看作真正的属性列表 var ndoeAttrs node.attributes; var self this; // 类数组对象…

原创改进 | 融合蝠鲼觅食与联想学习的量子多目标灰狼优化算法(Matlab)

​前面的文章里作者介绍了多目标灰狼优化算法(Multi-Objective Grey Wolf Optimizer,MOGWO),该算法是由Mirjalili等(灰狼算法的提出者)于2016年提出[1],发表在中科院一区期刊《expert systems with applications》。 MOGWO保留了灰狼算法的种…

Leetcode 第 111 场双周赛题解

Leetcode 第 111 场双周赛题解 Leetcode 第 111 场双周赛题解题目1:2824. 统计和小于目标的下标对数目思路代码复杂度分析 题目2:2825. 循环增长使字符串子序列等于另一个字符串思路代码复杂度分析 题目3:2826. 将三个组排序思路代码复杂度分…

PCL Kdtree 使用示例

PCL Kdtree 使用示例 文章目录 PCL Kdtree 使用示例一、关于 KDTree二、关于最近邻搜索三、复杂度分析四、C代码示例五、关键函数说明nearestKSearch 函数说明 一、关于 KDTree 点云数据主要是, 表征 目标表面 的海量点集合, 并不具备传统实体网格数据的…

P8651 [蓝桥杯 2017 省 B] 日期问题

#include <iostream> #include <string> using namespace std;int first; int second; int third; int day[13]{0,31,0,31,30,31,30,31,31,30,31,30,31};//每月日期bool select (int i,int j,int k){if ((i%100 first) && (j second) && (k thi…

分段函数线性化方法matlab测试

目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all; gn10;tn1; x_pfsdpvar(1, t…

【ArcGIS遇上Python】python实现批量XY坐标生成shp点数据文件

单个手动生成:【ArcGIS风暴】ArcGIS 10.2导入Excel数据X、Y坐标(经纬度、平面坐标),生成Shapefile点数据图层 文章目录 一、问题分析二、解决办法三、注意事项一、问题分析 现有多个excel、txt或者csv格式的坐标数据,需要根据其坐标批量一键生成shp点数据,如下X为经度,…

Java - OpenSSL与国密OpenSSL

文章目录 一、定义 OpenSSL&#xff1a;OpenSSL是一个开放源代码的SSL/TLS协议实现&#xff0c;也是一个功能丰富的加密库&#xff0c;提供了各种主要的加密算法、常用的密钥和证书封装管理功能以及SSL协议。它被广泛应用于Web服务器、电子邮件服务器、VPN等网络应用中&#x…

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

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

前端实现弹小球功能

这篇文章将会做弹小球游戏&#xff0c;弹小球游戏大家小时候都玩过&#xff0c;玩家需要在小球到达游戏区域底部时候控制砖块去承接小球&#xff0c;并不断的将小球弹出去。 首先看一下实现的效果。 效果演示 玩家需要通过控制鼠标来实现砖块的移动&#xff0c;保证在小球下落…