搭建 Redis 集群【Windows】

Redis 集群是一个分布式存储解决方案,它将数据分布在多个Redis节点上,以提高系统的可伸缩性、可靠性和性能。

1. 集群概念与特点

  • 集群概念:Redis集群是由多个相互独立的 Redis 节点组成,这些节点通过高速网络互联,并作为一个整体对外提供服务。

  • 特点

    1. 高可用性:通过数据分片和数据复制来提供高可用性。当一个节点失败时,集群可以继续工作,并通过数据复制从其他节点获得数据。
    2. 扩展性:支持水平扩展,可以将数据分布在多个节点上,从而提供更高的存储容量和处理能力。
    3. 高性能:可以在多个节点上并行处理请求,提供更高的吞吐量和更低的延迟。

1.1. 集群模式

Redis 集群主要有三种模式:主从模式、Sentinel 模式和 Cluster 模式。其中,Cluster 模式是最常用的模式,它支持多个 master 节点,每个 master 节点可以挂载多个 slave 节点,实现读写分离和数据备份。

1.2. 集群原理与实现

  1. 数据分片:Redis 集群使用分片技术将数据分布在多个节点上。数据被划分为多个槽(slot),每个槽对应一个节点。集群总共有 16384 个槽,每个节点负责管理一部分槽。
  2. 节点通信:节点之间通过 Gossip 协议进行通信,以保持节点之间的状态一致性。
  3. 请求处理:当一个客户端请求访问某个槽的数据时,它会先通过 CRC16 算法计算出该数据属于哪个槽,然后根据槽与节点的映射关系,将请求发送给相应的节点。
  4. 主从复制:每个主节点负责一部分槽的数据,同时也会有一个或多个从节点备份主节点的数据。当主节点故障时,其中一个从节点会被选举为新的主节点,保证系统的高可用性。
  5. 自动故障恢复:Redis 集群实现了自动数据迁移和故障恢复机制。当新增节点或节点故障时,集群会自动进行数据迁移,将槽重新分配给其他节点,以保证数据的均衡和高可用性。

2. 集群搭建

这里搭建的 Redis 集群位于单台主机上,所以 IP 地址均为 127.0.0.1

2.1. 创建配置文件

这里我们将搭建三个主节点,然后每个主节点分配一个从节点,所以一共需要启动六个 Redis 实例。

这里我们将文件命名为 cluster-port.conf,其中 port 是每个 redis 实例的端口。比如:cluster-6379.conf

port 6379cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000dbfilename dump-6379.rdb
appendfilename "appendonly-6379.aof"# linux 下你还要修改下面这些
daemonize yes
pidfile /var/run/redis-6379.pid

然后为每个端口的 redis 实例都创建一个配置文件。修改其中的端口即可。在 linux 中你可以使用下面的命令快速地创建多个文件。

# 这段命令的作用是将 redis-6379.conf 中所有的 6379 替换为 6380 并将结果
# 输出到 redis-6380.conf 文件中
sed 's/6379/6380/g' redis-6379.conf > redis-6380.conf

2.2. 启动集群

在 windows 中使用如下命令创建集群,Redis 会自动设置每个实例的主从关系。不过首先你需要先将全部的 redis 实例启动。像下面这样:

# start 作用是让 redis 后台启动
start redis-server.exe cluster-6379.conf

然后我们再通过 redis-cli 创建集群。

redis-cli.exe --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 --cluster-replicas 1

命令执行结果如下:

image.png

最后 redis 会自动配置集群,它会给出主从节点的分配,最后让你确认是否这样分配。输入 yes 之后集群就创建完成了。

2.3. 测试集群

既然集群搭建好了,那可得玩一玩。使用下面的命令连接集群,连接集群中任意一个主从节点均可。

# -c 表示连接集群
redis-cli.exe -p 6379 -c

然后我们就可以尝试添加数据、获取数据。由于在 redis 集群中,每个主节点存储着部分槽(slots)的数据,所以让我们添加数据时,如果该数据的键映射到其他的节点的槽位上了,redis-cli 会直接连接到对应的节点。结果如下:

image.png

3. 集群管理

Redis 集群还支持增删节点、获取集群状态等操作。

3.1. 获取集群信息
# 这里随便指定一个集群中节点即可
redis-cli.exe --cluster info 127.0.0.1:6379

image.png

3.2. 平衡槽位数量
redis-cli.exe --cluster rebalance 127.0.0.1:6379
3.3. 迁移节点槽位
redis-cli.exe --cluster reshard 127.0.0.1:6379
3.4. 删除节点
redis-cli.exe --cluster del-node 127.0.0.1:6379 <node-id>
3.5. 添加节点
redis-cli.exe --cluster add-node 127.0.0.1:8000 127.0.0.1:6379

添加节点后进行槽位迁移,该新节点加入时默认为主节点。

redis-cli.exe --cluster reshard 127.0.0.1:6379

receive ID 为 新加入节点的 nodeID,然后源节点输入 all 即可,最后确认即可。

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

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

相关文章

数据采集项目2-业务数据同步

全量同步 每天都将业务数据库中的全部数据同步一份到数据仓库 全量同步采用DataX datax datax使用 执行 python /opt/module/datax/bin/datax.py /opt/module/datax/job/job.json 更多job.json配置文件在&#xff1a; 生成的DataX配置文件 java -jar datax-config-genera…

Go Module详解

文章目录 基本介绍相关环境变量Go Module的使用初始化项目&#xff08;go mod init&#xff09;管理依赖项&#xff08;go mod edit&#xff09;获取依赖项&#xff08;go mod download&#xff09;整理依赖项&#xff08;go mod tidy&#xff09;导入vendor目录&#xff08;go…

优思学院|做质量没有前途?10年质量人想对大家说...

你是否也有过这样的困惑&#xff1f;做质量工作究竟有没有前途&#xff1f;是不是感觉每天都在重复一样的事情&#xff0c;看不到未来的希望&#xff1f; 今天&#xff0c;优思学院分享一个任职于五百强企业、有着10年经验的质量人、六西格玛黑带学生徐某的文章&#xff0c;和…

【VS】尚未配置为Web项目XXXX指定的本地IIS URL HTTP://localhost

报错原因&#xff1a; 我们在Web项目的属性配置中勾选了“使用本地IIS Web服务器”&#xff1b; 本来嘛&#xff0c;这也没啥&#xff0c;问题是当我们的电脑IP改变时&#xff0c;将会导致程序找不到原来的IP地址了&#xff0c;那么当然会报错啦。 解决办法&#xff1a; 其实…

新一代大核卷积反超ViT和ConvNet!同参数量下性能、精度、速度完胜

大核卷积网络是CNN的一种变体&#xff0c;也是深度学习领域的一种重要技术&#xff0c;它使用较大的卷积核来处理图像数据&#xff0c;以提高模型对视觉信息的理解和处理能力。 这种类型的网络能够捕捉到更多的空间信息&#xff0c;因为它的大步长和大感受野可以一次性覆盖图像…

填报志愿选大学专业,文科生如何选专业?

读文科的同学接触的专业知识相对广泛&#xff0c;往往被认为是“万金油”&#xff0c;他们仿佛什么都能做&#xff0c;但是和专业技能类知识不同&#xff0c;缺乏技术支持&#xff0c;从而使得文科专业的就业方向和前景远远比不上理科专业那么明朗&#xff0c;对于众多文科生而…

加速“芯”动力 | 2024集成电路测试工程师研修班(苏州场)报名通知

6月19日—20日&#xff0c;加速“芯”动力——2024集成电路测试工程师研修班正式开课。本次培训课程内容包括芯片设计测试技术分享、解决方案分享、ATE编程接口介绍、ATE向量微指令、ATE量产界面介绍、测试开发基础培训、程序开发实训等内容&#xff0c;感兴趣的小伙伴&#xf…

【智能家居控制系统项目】一、项目系统镜像烧录与系统登录

前言 完成本章节将可以获得本项目的系统UI界面功能。本章节主要介绍如何烧录项目系统镜像以及进入系统。配套的视频介绍可以点击跳转到智能家居项目复刻配套视频 1.系统功能页面介绍 完成本章全部步骤&#xff0c;我们将可使用以下项目系统功能界面。 1.1 家居总览界面 主界面…

热门开源项目OpenHarmony

目录 1.概述 1.1.开源项目的意义 1.2.开源项目对软件行业的促进作用 1.3.小结 2.OpenHarmony 2.1.技术架构 2.2.分布式软总线 2.2.1.架构 2.2.2.代码介绍 2.2.2.1.代码目录 2.2.2.2.说明 2.2.2.3.发现组网和传输 2.2.2.3.1.发现 2.2.2.3.2.组网 2.2.2.3.3.传输…

从0到1:手动测试迈向自动化——手机web应用的自动化测试工具

引言&#xff1a; 在当今移动互联网时代&#xff0c;手机web应用已经成为人们生活中不可或缺的一部分。为了保证手机web应用的质量和稳定性&#xff0c;自动化测试工具变得十分重要。本文将介绍手机web应用自动化测试工具的选择和使用&#xff0c;提供一份超详细且规范的指南&a…

160. 相交链表 (Swift版本)

题目描述 最简单直接的解法 遍历 headA 的所有节点, 看 headB 中是否有相交的节点 /*** Definition for singly-linked list.* public class ListNode {* public var val: Int* public var next: ListNode?* public init(_ val: Int) {* self.val val*…

(三十)Flask之wtforms库【剖析源码上篇】

每篇前言&#xff1a; &#x1f3c6;&#x1f3c6;作者介绍&#xff1a;【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者 &#x1f525;&#x1f525;本文已收录于Flask框架从入门到实战专栏&#xff1a;《Flask框架从入…

Nacos启动报错

报错日志&#xff1a; Caused by: java.lang.NullPointerException at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2983) at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1873) at com.mysql.jdbc.Mysql…

为Windows鼠标增加个性功能的软件

一、简介 1、是一款专为Windows操作系统设计的桌面增强工具&#xff0c;它允许用户通过简单的鼠标操作来管理和控制窗口&#xff0c;从而提高工作效率。根据搜索结果&#xff0c;for Windows提供了多种功能&#xff0c;如在屏幕的四个角落添加快捷键、窗口置顶、窗口最小化、快…

python中的turtle

turtle个别指令 初始箭头默认指向为东&#xff08;右&#xff09; 往前&#xff08;右&#xff09;三个格&#xff1a;turtle.forward(3) 往后&#xff08;左&#xff09;三个格&#xff1a;turtle.backward(3) 往左转90度&#xff1a;turtle.left(90) 往右转90度&#xf…

干G货,性能测试基本方法和原则,

一、性能测试关键点 评估性能指标——线程tps&#xff08;可架构给&#xff09; 吞吐量qps&#xff08;可架构给&#xff09; 错误率&#xff08;可架构给&#xff09; 平均响应时间&#xff08;可架构给&#xff09;模拟线上数据量了解接口有没有缓存&#xff0c;有缓存的需要…

人工智能内容标签和披露:指南、样本和最佳实践

AI Content Labeling and Disclosure: Guidelines, Samples & Best Practices 【前言】当我们谈论人工智能生成的内容时&#xff0c;话题很快转向了透明度和信任的重要性。随着人工智能继续塑造数字景观&#xff0c;对内容标签和披露的明确指导方针的需求变得至关重要。无…

【数据质量人人有责】数据质量是什么?

引言&#xff1a;数据是当代企业的核心资源之一&#xff0c;对于支持业务决策、优化运营和增强竞争力至关重要。然而&#xff0c;仅仅拥有数据并不意味着能够充分发挥其潜在价值。只有先确保数据质量&#xff0c;才能保证后续数据分析和挖掘的正确的结果对管理和业务有价值&…

C++ 06 之 c++增强

c06c增强.cpp #include <iostream>using namespace std; // 1、全局变量检测增强&#xff1a;可以检测出重定义 (c语言不会报错&#xff0c;但是C会报错) //int a; //int a 10;// 2、函数检测增强: 函数返回值类型、形参类型、实参个数 int sum(int a, int b) {return …

MBTI:探索你的性格类型

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…