【Windows】Redis集群部署

集群是如何进行工作的

Redis采用哈希槽来处理数据与节点之间的映射关系,一个集群共有16384 个哈希槽,每个key通过 CRC16算法计算出一个16bit的值,再对16384取模,得到对应的哈希槽,集群通过维护哈希槽与节点的关系来得到key的映射关系。集群节点之间互相通信,把当前节点的哈希槽分配信息互相传递。

客户端在连接到节点时,会获取到哈希槽与节点的映射关系,并缓存到本地。如果节点哈希槽与节点的映射关系改变,那么当客户端使用key计算后访问节点时,如果节点不存在该哈希槽,则会将最新的哈希槽映射关系返回给客户端,客户端更新本地缓存,并根据最新的映射关系再次访问对应的节点操作。

Redis集群安装

在Windows系统下搭建Redis集群需要4个组件:

  • Redis
  • Ruby语言运行环境
  • Redis的Ruby驱动redis-xxxx.gem
  • 创建Redis集群的工具redis-trib.rb

安装Redis,并运行3个实例(Redis集群需要至少3个以上节点,低于3个无法创建)。

使用redis-trib.rb工具来创建Redis集群,由于该文件是用ruby语言写的,所以需要安装Ruby开发环境,以及驱动redis-xxxx.gem。

下载并安装Redis

Redis提供msi和zip格式的下载文件,这里下载zip格式 3.0.504版本。

将下载到的Redis-x64-3.0.504.zip解压即可,为了方便使用,建议放在盘符根目录下,并修改目录名为Redis,如:C:\Redis 或者D:\Redis。

通过配置文件来启动3个不同的Redis实例,由于Redis默认端口为6379,所以这里使用了6380、6381、6382来运行3个Redis实例。

注意:为了避免不必要的错误,配置文件尽量保存为utf8格式,并且不要包含注释

配置文件中以下两种保存日志的方式(保存在文件中、保存到System Log中)请根据需求选择其中一种即可:

loglevel notice                       #日志的记录级别,notice是适合生产环境的
logfile "D:/Redis/Logs/redis6380_log.txt"      #指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录
syslog-enabled yes       #是否使用系统日志   
syslog-ident redis6380   #在系统日志的标识名

这里使用了保存在文件中的方式,所以先在redis目录D:/Redis下新建Logs文件夹。

redis.6380.conf 内容如下:

port 6380      
loglevel notice    
logfile "D:/Redis/Logs/redis6380_log.txt"       
appendonly yes
appendfilename "appendonly.6380.aof"   
cluster-enabled yes                                    
cluster-config-file nodes.6380.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

redis.6381.conf 内容如下:

port 6381       
loglevel notice   
logfile "D:/Redis/Logs/redis6381_log.txt"       
appendonly yes
appendfilename "appendonly.6381.aof"    
cluster-enabled yes                                    
cluster-config-file nodes.6381.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

redis.6382.conf 内容如下:

port 6382       
loglevel notice    
logfile "D:/Redis/Logs/redis6382_log.txt"         
appendonly yes
appendfilename "appendonly.6382.aof"    
cluster-enabled yes                                    
cluster-config-file nodes.6382.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes

配置内容的解释如下:

#端口号
port 6380
#日志的记录级别,notice是适合生产环境的
loglevel notice 
#指定log的保持路径,默认是创建在Redis安装目录下,如果有子目录需要手动创建,如此处的Logs目录
logfile "Logs/redis6380_log.txt"
#是否使用系统日志    
syslog-enabled yes  
#在系统日志的标识名                       
syslog-ident redis6380
#数据的保存为aof格式                   
appendonly yes
#数据保存文件                            
appendfilename "appendonly.6380.aof"
#是否开启集群    
cluster-enabled yes
#记录集群信息,不用手动维护,Redis Cluster 会自动维护                                    
cluster-config-file nodes.6380.conf
集群节点连接超时时间,如果集群规模小,都在同一个网络环境下,可以配置的短些,更快的做故障转移。 
cluster-node-timeout 15000
#设置为0,如果master slave都挂掉, slave跟master失联又超过这个数值*timeout的数值, 
#就不会发起选举了。如果设置为0,就是永远都会尝试发起选举,尝试从slave变为mater
cluster-slave-validity-factor 10
#只有当旧主服务器仍有至少给定数量的其他工作副本时,副本才会迁移到孤立主服务器。这个数字就是“移民壁垒”。
#迁移屏障为1意味着只有当主副本至少有一个其他工作副本时,副本才会迁移,以此类推。它通常反映集群中每个主节点所需的副本数量。
#默认值为1(副本仅在其主副本至少保留一个副本时迁移)。要禁用迁移,只需将其设置为一个非常大的值。
#可以设置值0,但该值仅用于调试和生产中的危险。
cluster-migration-barrier 1
#设置为no,默认为yes,故障发现到自动完成转移期间整个集群是不可用状态,
#对于大多数业务无法容忍这种情况,因此要设置为no,当主节点故障时只影 响它负责槽的相关命令执行,不会影响其他主节点的可用性。
#只要有结点宕机导致16384个槽没全被覆盖,整个集群就全部停止服务,所以一定要改为no
cluster-require-full-coverage yes

将上述配置文件保存到redis目录下,并使用这些配置文件安装3个redis服务,命令如下:

注意:redis.6380.conf等配置文件最好使用完整路径,避免重启Redis集群出现问题

D:/Redis/redis-server.exe --service-install D:/Redis/redis.6380.conf --service-name redis6380
D:/Redis/redis-server.exe --service-install D:/Redis/redis.6381.conf --service-name redis6381
D:/Redis/redis-server.exe --service-install D:/Redis/redis.6382.conf --service-name redis6382

启动这3个服务,命令如下:

D:/Redis/redis-server.exe --service-start --service-name redis6380
D:/Redis/redis-server.exe --service-start --service-name redis6381
D:/Redis/redis-server.exe --service-start --service-name redis6382

下载并安装ruby

1、下载Ruby

地址:Download Archives

下载后,双击安装即可,同样,为了操作方便,也是建议安装在盘符根目录下,如: D:\ruby22-x64 ,安装时这里选中后两个选项,意思是将ruby添加到系统的环境变量中,在cmd命令中能直接使用ruby的命令。

2、下载Redis驱动

下载ruby环境下Redis的驱动,考虑到兼容性,这里下载的是3.2.2版本。

redis | RubyGems.org | your community gem host

注意:下载在页面右下角相关连接一项中

安装该驱动,命令如下:

gem install --local path_to_gem/filename.gem  

3、下载redis-trib.rb

下载Redis官方提供的创建Redis集群的ruby脚本文件redis-trib.rb,路径如下:

https://raw.githubusercontent.com/MSOpenTech/redis/3.0/src/redis-trib.rb

打开该链接如果没有下载,而是打开一个页面,那么将该页面保存为redis-trib.rb

建议保存到redis的目录下。

注意:因为redis-trib.rb是ruby代码,必须用ruby来打开,若redis-trib.rb无法识别,需要手动选择该文件的打开方式:

选择ruby为的打开方式后,redis-trib.rb的logo都会发生改变,如下图:

创建Redis集群

cmd下切换到Redis目录,使用redis-trib.rb来创建Redis集群:

redis-trib.rb create --replicas 0 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 

执行结果:

当出现提示时,需要手动输入yes,输入后,当出现以下内容,说明已经创建了Redis集群:

检验是否真的创建成功,输入以下命令:

redis-trib.rb check 127.0.0.1:6380

出现以下信息,说明创建的Redis集群是没问题的:

使用Redis客户端Redis-cli.exe来查看数据记录数,以及集群相关信息:

D:/Redis/redis-cli.exe -c -p 6380

-c 表示 cluster

-p 表示 port 端口号

输入dbsize查询 记录总数

dbsize

或者一次输入完整命令:

D:/Redis/redis-cli.exe -c -p 6380 dbsize

结果如下:

输入cluster info可以从客户端的查看集群的信息:

cluster info

结果如下:

如果搭建redis集群出现如下的问题:

解决方案:

  • 删除每个节点对应的nodes-xxx.conf配置文件
  • 删除每个节点下的aof、rdb文件
  • 关掉redis集群各个实例的进程,重新启动

Redis的服务命令

假设在Redis的安装目录下,有一个redis.windows-service.conf文件,即默认的配置文件。

如果需要修改端口号,或者设置密码就需要修改其中的内容:

默认端口号是6379,你可以随意修改

port 6379

默认是没有设置密码,如果需要则修改requirepass, 将前面的#去掉,将foobared改成你的密码

# requirepass foobared

Redis官网提供两种安装方式:msi文件格式 和 zip包文件,其中msi格式的redis安装后,即自动添加到系统的服务列表中,而zip包的redis则需要手动安装服务

特别注意:使用默认的配置文件安装Redis服务时,必须在Redis的安装目录下新建一个Log目录,否则会报错,因为在redis.windows-service.conf中设置了日志的保存目录为安装目录下的Log,当然这个可以修改。

Redis常用的服务命令如下:

1)安装服务

--service-install

完整例子:

redis-server.exe --service-install redis.windows-service.conf --loglevel notice

这里就是用了redis.windows-service.conf作为配置文件, --loglevel notice是设置log记录的,基本是notice。

2)卸载服务

--service-uninstall

完整例子:

redis-server --service-uninstall

3)启动服务

--service-start

4)停止服务

--service-stop

5)其他命令

--service-name YourServiceName #设置服务的名字
--port YourPortNumber #设置服务的端口号

使用如下,通过cmd切换到Redis的安装目录,然后输入命令即可,如:

第一条命令为:以redis.windows-servie.conf作为配置文件,名字为 redisTest, 端口号为 6388 来安装一个Redis服务;

第二条命令为:(红色框内)是卸载名为 redisTest的服务

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

redis与分布式

主从复制 概念 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后者称为从节点(Slave),数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave 以读为…

MySQL----MHA高可用

文章目录 一、MHA理论1.1什么是 MHA1.2MHA 的组成1.3MHA 的特点 二、MHA的一主两从部署实验设计故障修复步骤: 一、MHA理论 1.1什么是 MHA MHA(MasterHigh Availability)是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出…

【Django】Django框架使用指南

Django使用指南 作者简介:嗨~博主目前是长安大学软件工程专硕在读📘,喜欢钻研一些自己感兴趣的计算机技术,求关注😉! 框架简介:Django是一个基于Python语言的开源Web应用框架,采用 M…

基于STM32FFT(快速傅里叶变换)音频频谱显示功能实现

+ v hezkz17进数字音频系统研究开发交流答疑 一实验效果 二 设计过程 要用C语言实现STM32频谱显示功能,可以按照以下步骤进行操作: 1 确保已经安装好了适当的开发环境和工具链,例如Keil MDK或者GCC工具链。 2 创建一个新的STM32项目,并选择适合的MCU型号。 3 配置G…

【数据挖掘】时间序列教程【九】

第5章 状态空间模型和卡尔曼滤波 状态空间模型通常试图描述具有两个特征的现象 有一个底层系统具有时变的动态关系,因此系统在时间上的“状态”t 与系统在时间的状态t−1有关 .如果我们知道系统在时间上的状态t−1 ,那么我们就有了我们需要知道的一切,以便对当时的状态进行推…

Android Zygote 启动流程

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: Android系统包含netd、servicemanager、surfaceflinger、zygote、media、installd、bootanimation 等基本服务,具体作用请看下图。 Android…

更开放、更高性能、更具规模,闪马智能布局AGI时代

7月6日,2023世界人工智能大会(WAIC 2023)在上海盛大开幕。本届大会以“智联世界 生成未来”为主题,聚焦通用人工智能发展,共话产业新未来。 8日上午,由上海闪马智能科技有限公司(下称“闪马智能…

el-form实现其中一个填写即可的校验

<el-formref"form":model"formData":rules"formRules"label-width"130px"><el-row :gutter"24"><el-col :span"12"><el-form-item label"司机姓名 :" prop"driverName"…

西电_矩阵论_学习笔记

文章目录 【 第一章 线性空间 】【 第二章 范数 】【 第三章 矩阵函数 】【 第四章 矩阵分解 】【 第五章 矩阵特征值估计 】【 第六章 广义逆 】【 考试重点内容总结 】 这是博主2023春季西电所学矩阵论的思维导图&#xff08;软件是幕布&#xff09;&#xff0c;供大家参考&a…

GaussDB OLTP云数据库配套工具DRS

目录 一、前言 二、DRS定义与使用场景 1、DRS定义 2、DRS场景示意图 三、DRS核心功能 1、实时迁移管理 2、实时同步管理 3、备份迁移管理 4、数据订阅管理 5、实时灾备管理 四、小结 一、前言 华为GaussDB云数据库提供了配套的生态工具数据复制服务DRS。 DRS围绕云…

漏洞深度分析 | CVE-2023-36053-Django 表达式拒绝服务

​ 项目介绍 Django 是一个高级 Python Web 框架&#xff0c;鼓励快速开发和简洁、务实的设计。它由经验丰富的开发人员构建&#xff0c;解决了 Web 开发的大部分麻烦&#xff0c;因此您可以专注于编写应用程序&#xff0c;而无需重新发明轮子。它是免费且开源的。 项目地址…

Squid 缓存服务器

Squid 缓存服务器 作为应用层的代理服务软件&#xff0c;Squid 主要提供缓存加速和应用层过滤控制的功能 ☆什么是缓存代理 当客户机通过代理来请求 Web 页面时 指定的代理服务器会先检查自己的缓存&#xff0c;如果缓存中已经有客户机需要访问的页面&#xff0c;则直接将缓…

【考研思维题】【哈希表 || 什么时候用哈希表呢?快速查询的时候】【我们一起60天准备考研算法面试(大全)-第九天 9/60】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09;   文章字体风格&#xff1a; 红色文字表示&#…

ModaHub魔搭社区:向量数据库Zilliz Cloud删除 Entity和删除 Collection教程

目录 删除单个 Entity 批量删除 Entity 开始前 操作步骤 使用限制 Entity 是指存储在 Zilliz Cloud 集群中的数据实体,包含用于处理、搜索和查询的数据。如果您不再需要某个 Entity,可以执行相关操作将其删除。 本文介绍如何从 Collection 中删除单个或多个 Entity。 …

网络数据包的监听与分析——IP数据报文分析

1. 抓包工具下载 x下面是一个IP数据报的抓包软件——IPtool的蓝奏云下载链接 https://wwix.lanzoue.com/iaGpy11klpnc 2. iptool使用 下载解压之后&#xff0c;右击以管理员身份运行&#xff0c;打开该exe文件即可 然后点击绿色运行就开始捕包了 随便点一个包进去进行分析就可…

JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)

目录 认识MAVEN安装&配置MAVENwindows安装MAVENMAVEN的配置本地仓库 localRepository镜像 mirrors代理仓库 respositories代理 proxies IDEA配置MAVEN&#xff08;一个module&#xff09; MAVEN生命周期install下载包 模块的pom.xml坐标gav打包方式 package属性值 properti…

web 前端 Day 4

盒子模型 <style>div {width: 300px;height: 300px;background-color: pink;padding-left: 4px; 左侧内边距border: 3px solid red;margin: 50px;}</style> padding 内边距 </head> ​ <body> ​<div>cfdaffshydghjgdjdnjjjjjjjjjjjjjjj&l…

Spark学习--3、WordCount案例、RDD序列化、RDD依赖关系、RDD持久化

1、WordCount案例实操 导入项目依赖 <dependencies><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.3.0</version></dependency> </dependencies>1.1 本…

2023年java还是golang还是c#?

前言 我们可以先来看一下这三门语言各自的优劣 学习曲线&#xff1a;如果你是初学者或对编程相对陌生&#xff0c;Java可能是一个较好的选择。它有广泛的学习资源和社区支持&#xff0c;易于上手。Go也有简单易学的特点&#xff0c;但由于相对较年轻&#xff0c;相关的学习资…

Linux驱动进阶(一)——设备驱动中的并发控制

文章目录 前言并发与竞争原子变量操作原子变量操作原子整型操作原子位操作 自旋锁自旋锁概述自旋锁的使用自旋锁的使用注意事项 信号量信号量概述信号量的实现信号量的使用自旋锁与信号量的对比 完成量完成量概述完成量的实现完成量的使用 小结 前言 现代操作系统有三大特征&a…