当前位置: 首页 > news >正文

Windows本地搭建Redis集群(集群模式)

手打不易,如果转摘,请注明出处!

注明原文:https://blog.csdn.net/q258523454/article/details/144477957


前言

Redis版本:redis 5.0.14.1

Windows版本:Windows10

本文只讲集群模式

1. 安装Redis

1.1 下载

https://github.com/tporadowski/redis/releases

1.2 解压

解压到任意目录,例如:E:\Program Files (x86)\redis5.0.14.1

2. 集群配置准备

2.1 创建集群目录

创建一个目录,名字随意,例如: cluster

由于Redis集群模式,一般需要6个节点。假设我们要创建的集群节点的端口分别为:

7001、7002、7003、7004、7005、7006.

我们先创建7001节点,如图所示先在cluster目录下,创建一个名为7001的目录.

我们把下载的redis再解压(或者拷贝)一次,本文这里下载的版本是:Redis-x64-5.0.14.1.zip,重新再这里解压一次。注意:cluster目录的上一层,已经是解压了的,只是这里在做一次同样的操作。

得到如下目录:

2.2 修改节点配置

打开目录:E:\Program Files (x86)\redis5.0.14.1\cluster\7001 下的配置文件:redis.windows.conf

修改或新增以下内容:

注意:

① requirepass 和 masterauth 是密码,可以不设置,看自己需要

② requirepass  和 masterauth 需要同时设置,否则下次启动会报错:MASTER aborted replication with an error: NOAUTH Authentication required,原因可以参考:Link

port 7001
cluster-enabled yes
cluster-config-file nodes-7001.conf
cluster-node-timeout 15000requirepass 123456
masterauth 123456

2.3 新增start.bat

在目录:E:\Program Files (x86)\redis5.0.14.1\cluster\7001 新增bat文件,方便启动

start.bat 内容如下:

title redis-7001
redis-server.exe redis.windows.conf

此时,第一个集群节点7001,配置完成。

我们可以双击 start.bat 看是否正常启动.

2.4 创建其他5个节点

我们直接拷贝7001目录,拷贝命名为7002、7003、7004、7005、7006

分别修改对应的配置文件 redis.windows.conf

注意:下面的配置,700X,在不同目录下改成对应的7002、7003、7004、7005、7006

port 700X
cluster-enabled yes
cluster-config-file nodes-700X.conf
cluster-node-timeout 15000requirepass 123456
masterauth 123456

分别修改对应的启动bat文件 start.bat

注意:下面的配置,700X,在不同目录下改成对应的7002、7003、7004、7005、7006

title redis-700X
redis-server.exe redis.windows.conf

至此,6个集群节点的配置,全部准备完毕!

3. 启动集群

3.1 启动6个节点

首先,我们启动这6个节点。

方式1:对每个节点手动启动 (不推荐)

redis-server.exe redis.windows.conf

方式2:执行每个目录下的  start.bat (不推荐)

方式3:写一个批量的bat,一次性启动

例如,bat文件名为:run_cluster_7001_7006.bat

命令如下:

@echo off
setlocalrem 获取脚本所在的目录作为父目录
set "parent_directory=%~dp0"rem 遍历父目录下的每个子目录
for /d %%D in ("%parent_directory%*") do (rem 检查子目录是否包含 start.bat 文件if exist "%%~D\start.bat" (rem 进入子目录并运行 start.batpushd "%%~D"start start.batpopd)
)endlocal

保存后,双击即可执行。

3.2 启动集群模式

节点都启动后,节点界面会显示:Ready to accept connections

意思是需要我们启动集群模式。

启动命令是:

注意:如果没有密码,去掉“-a 123456

redis-cli.exe -a 123456 --cluster create --cluster-replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

假如我们用下面这个 redis-cli.exe 启动

打开CMD命令,输入 “E:”,切换磁盘。注意冒号是英文格式。

E:

cd 到指定目录:

E:\Program Files (x86)\redis5.0.14.1

执行命令,注意redis-cli.exe前面没有 ./

redis-cli.exe -a 123456 --cluster create --cluster-replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

CMD界面执行如图所示:

E:\Program Files (x86)\redis5.0.14.1>redis-cli.exe -a 123456 --cluster create --cluster-replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 127.0.0.1:7005 to 127.0.0.1:7001
Adding replica 127.0.0.1:7006 to 127.0.0.1:7002
Adding replica 127.0.0.1:7004 to 127.0.0.1:7003
>>> Trying to optimize slaves allocation for anti-affinity
[WARNING] Some slaves are in the same host as their master
M: 25e19e328a37fd52b671f00c0a9d87111d514487 127.0.0.1:7001slots:[0-5460] (5461 slots) master
M: 5f93a0d2fb64fb182fe22b8d8a75c4af6007eec5 127.0.0.1:7002slots:[5461-10922] (5462 slots) master
M: d6d27d2be5a257f84b393104b9eb31014be95d0d 127.0.0.1:7003slots:[10923-16383] (5461 slots) master
S: aeca57ee8f3c1dba4f04223ebbe44701853db324 127.0.0.1:7004replicates 5f93a0d2fb64fb182fe22b8d8a75c4af6007eec5
S: 0964ae11a4bf4e924bd52f35e0e9e9961d471236 127.0.0.1:7005replicates d6d27d2be5a257f84b393104b9eb31014be95d0d
S: b9755b7d45c2d794743666ccb3a70f34979857de 127.0.0.1:7006replicates 25e19e328a37fd52b671f00c0a9d87111d514487
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join>>> Performing Cluster Check (using node 127.0.0.1:7001)
M: 25e19e328a37fd52b671f00c0a9d87111d514487 127.0.0.1:7001slots:[0-5460] (5461 slots) master1 additional replica(s)
S: 0964ae11a4bf4e924bd52f35e0e9e9961d471236 127.0.0.1:7005slots: (0 slots) slavereplicates d6d27d2be5a257f84b393104b9eb31014be95d0d
M: 5f93a0d2fb64fb182fe22b8d8a75c4af6007eec5 127.0.0.1:7002slots:[5461-10922] (5462 slots) master1 additional replica(s)
M: d6d27d2be5a257f84b393104b9eb31014be95d0d 127.0.0.1:7003slots:[10923-16383] (5461 slots) master1 additional replica(s)
S: b9755b7d45c2d794743666ccb3a70f34979857de 127.0.0.1:7006slots: (0 slots) slavereplicates 25e19e328a37fd52b671f00c0a9d87111d514487
S: aeca57ee8f3c1dba4f04223ebbe44701853db324 127.0.0.1:7004slots: (0 slots) slavereplicates 5f93a0d2fb64fb182fe22b8d8a75c4af6007eec5
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.E:\Program Files (x86)\redis5.0.14.1>

各个节点的界面如图所示:

4. 连接测试

这里用客户端:ARDM——Another Redis Desktop Manager

下载链接:

https://github.com/qishibo/AnotherRedisDesktopManager/releases

如图所示,编辑信息,点击确认。

点击进入

显示正常

5. 其他

5.1 快速停止集群模式

我们新建一个批量bat,如图所示:

stop.bat 内容如下:

@echo off
set START_PORT=7001
set END_PORT=7006echo Closing port  %START_PORT%-%END_PORT%...
echo.for /l %%i in (%START_PORT%, 1, %END_PORT%) do (call :closeProgram %%i
)echo.
echo Closing all
echo.taskkill /f /fi "imagename eq cmd.exe"echo.
echo All closed.
goto :eof:closeProgram
set PORT=%1echo Searching for programs using port %PORT%...for /f "tokens=5" %%a in ('netstat -ano ^| findstr /i ":%PORT%"') do (taskkill /f /pid %%aecho Program with port %PORT% has been closed.
)echo.
echo End of program list for port %PORT%.
goto :eof

相关文章:

Windows本地搭建Redis集群(集群模式)

手打不易,如果转摘,请注明出处! 注明原文:https://blog.csdn.net/q258523454/article/details/144477957 前言 Redis版本:redis 5.0.14.1 Windows版本:Windows10 本文只讲集群模式 1. 安装Redis 1.1 …...

使用FastGPT制做一个AI网站日志分析器

越来越的多网站面临每天上千次的扫描和各类攻击,及时发现攻击IP,并有效的屏蔽不良访问成为网站安全的重要保障,这里我们使用AI来完成对网站日志的日常分析。 我们来使用FastGPT来制做一个AI网站日志析器,下面就开始: …...

探索 Echarts 绘图:数据可视化的奇妙之旅

目录 一、Echarts 初印象 二、搭建 Echarts 绘图环境 三、绘制第一个图表:柱状图的诞生 四、图表的美化与定制:让数据更具吸引力 1. 主题切换:一键变换风格 2. 颜色调整:色彩搭配的艺术 3. 标签与提示框:丰富信…...

网络基础(IP和端口)

网络连接的核心-TCP/IP体系结构(IP和端口) 什么是IP地址 1.IP地址是电子设备(计算机)在互联网上的唯一标识 2.用来在互联网中寻找电脑 IP 地址就像是你家的地址一样,不过它是在网络世界里用来找到一台电脑或者其他网…...

UE4与WEB-UI通信

前端HTML代码 <!DOCTYPE html><html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>test web ui</title><script src"https://cdn.b…...

前缀和与差分算法详解

定义 前缀和是一种数据预处理技术&#xff0c;它指的是从数组的第一个元素开始&#xff0c;到当前元素为止的所有元素的和。这种技术可以快速计算任意区间内元素的和&#xff0c;而不需要每次都从头开始累加。 差分则是前缀和的逆运算&#xff0c;它主要用于处理对数组某个区…...

《深入探究:C++ 在多方面对 C 语言实现的优化》

目录 一、C 在 C 上进行的优化二、C 关键字&#xff08;C 98&#xff09;三、C 的输入输出1. cin 和 cout 的使用2. cin、cout 和 scanf()、printf() 的区别 三、命名空间1. 命名空间的使用2. 嵌套命名空间3. 在多个头文件中使用相同的命名空间 四、函数缺省值1. 缺省值的使用2…...

React 第十六节 useCallback 使用详解注意事项

useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook&#xff0c;返回一个函数的 memoized的值&#xff1b; 2、如果多次传入的依赖项不变&#xff0c;那么多次定义的时候&#xff0c;返回的值是相同的,防止频繁触发更新&#xff1b; 3、多应用在 父组件为函…...

使用C#和OPenCV实现圆形检测

文章目录 霍夫变换使用 OpenCV 和 C# 实现圆形检测 霍夫变换 在计算机视觉中&#xff0c;圆形检测是一个常见且有用的任务&#xff0c;特别是在物体识别、图像分析和图形处理等领域。OpenCV 是一个强大的开源计算机视觉库&#xff0c;它提供了许多工具来实现不同的图像处理功能…...

评估一套呼叫中心大模型呼入机器人的投入回报比?

评估一套呼叫中心大模型呼入机器人的投入回报比&#xff1f; 原作者&#xff1a;开源呼叫中心FreeIPCC&#xff0c;其Github&#xff1a;https://github.com/lihaiya/freeipcc 评估一套呼叫中心大模型呼入机器人的投入回报比&#xff08;ROI&#xff09;&#xff0c;是一个多…...

十八、Label 和 Selector

Label 是键值对,用来标识 Kubernetes 资源(如 Pod、Node、Service 等)的属性。它们并不直接影响资源的行为,但可以帮助用户快速组织、查询和操作这些资源。标签可以用于选择、过滤和分组。 Label: 标签对 k8s 中各种资源进行分类、分组,如Pod和节点进行分组。通过添加kev…...

实现按键按下(低电平)检测到下降沿

按照流程进行编程 步骤1&#xff1a; 初始化函数 包括时基工作参数配置 输入通道配置 更新中断使能 使能捕获、捕获中断及计数器 HAL_TIM_IC_Init(&ic_handle) //时基参数配置 HAL_TIM_IC_ConfigChannel(&ic_handle,&ic_config,TIM_CHANNEL_2) //输…...

解析 SSM 垃圾分类系统,助力生态平衡

前 言 垃圾分类系统&#xff0c;传统的垃圾分类系统模式还处于线下管理阶段&#xff0c;管理效率极低。随着垃圾分类系统信息的不断增多&#xff0c;传统基于线下管理模式已经无法满足当前用户需求&#xff0c;随着信息化时代的到来。通过该系统的设计&#xff0c;管理员可以管…...

软件工程 设计的复杂性

复杂性代表事件或事物的状态&#xff0c;它们具有多个相互关联的链接和高度复杂的结构。在软件编程中&#xff0c;随着软件设计的实现&#xff0c;元素的数量以及它们之间的相互联系逐渐变得庞大&#xff0c;一下子变得难以理解。 如果不使用复杂性指标和度量&#xff0c;软件…...

Nginx 限制只能白名单 uri 请求的配置

实际生产项目中&#xff0c;大多数时候我们会将后端的 http 接口通过前置 nginx 进行反向代理&#xff0c;对互联网用户提供服务。往往我们后端服务所能提供的接口服务是大于互联网用户侧的实际请求的接口地址数量的&#xff08;例如后端服务一共有100个api接口&#xff0c;经过…...

QT c++ 同时使用sqlite 和mysql数据库的问题

在项目开发中&#xff0c;同时使用了sqlite 和mysql数据库&#xff0c;分开这两部分运行功能都正常&#xff0c;但是一起运行&#xff0c;就异常&#xff0c;sqlite部分不能使用。 现象&#xff1a;出现如下提示 QSqlDatabasePrivate::addDatabase: duplicate connection nam…...

redis集群 服务器更换ip,怎么办,怎么更换redis集群的ip

redis集群 服务器更换ip&#xff0c;怎么办&#xff0c;怎么更换redis集群的ip 1、安装redis三主三从集群2、正常状态的redis集群3、更改redis集群服务器的ip 重启服务器 集群会down4、更改redis集群服务器的ip 重启服务器 集群down的原因5、更改redis集群服务器的ip后&#xf…...

【C++习题】19.数组中第K个大的元素

题目&#xff1a;数组中第K个大的元素 链接&#x1f517;&#xff1a;数组中第K个大的元素 题目&#xff1a; 代码&#xff1a; class Solution { public:int findKthLargest(vector<int>& nums, int k) {// 将数组中的元素先放入优先级队列中priority_queue<i…...

JIS-CTF: VulnUpload靶场渗透

JIS-CTF: VulnUpload来自 <https://www.vulnhub.com/entry/jis-ctf-vulnupload,228/> 1,将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 靶机IP地址192.168.23.162&#xff0c;攻击机IP地址192.168.23.140…...

BGP-面试

简单介绍一下BGP BGP&#xff0c;边界网关协议&#xff0c;属于路径矢量路由协议。属于触发式更新或者增量更新。具有丰富的路由策略&#xff0c;能够灵活的进行路由选择。重心不是在路由学习&#xff0c;而是路由优选、更高效的传递路由和维护大量的路由信息。基于TCP&#xf…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...