Redis集群搭建(非常详细)

article/2025/11/5 6:22:09

https://blog.csdn.net/qq_42815754/article/details/82912130

redis集群搭建

在开始redis集群搭建之前,我们先简单回顾一下redis单机版的搭建过程

  1. 下载redis压缩包,然后解压压缩文件;

  2. 进入到解压缩后的redis文件目录(此时可以看到Makefile文件),编译redis源文件;

  3. 把编译好的redis源文件安装到/usr/local/redis目录下,如果/local目录下没有redis目录,会自动新建redis目录;

  4. 进入/usr/local/redis/bin目录,直接./redis-server启动redis(此时为前端启动redis);

  5. 将redis启动方式改为后端启动,具体做法:把解压缩的redis文件下的redis.conf文件复制到/usr/local/redis/bin目录下,然后修改该redis.conf文件->daemonize:no 改为daemonize:yse;

  6. 在/bin目录下通过./redis-server redis.conf启动redis(此时为后台启动)。 综上redis单机版安装启动完成。 具体详细带图步骤请参考 -> redis入门 请原谅我的啰嗦,ok,接着咱们回到本次话题----redis集群搭建!

一、Redis Cluster(Redis集群)简介

  • redis是一个开源的key value存储系统,受到了广大互联网公司的青睐。redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群,我这里用的是redis3.0.0版本;

  • redis集群采用P2P模式,是完全去中心化的,不存在中心节点或者代理节点;

  • redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例;

  • 为了实现集群的高可用,即判断节点是否健康(能否正常使用),redis-cluster有这么一个投票容错机制:如果集群中超过半数的节点投票认为某个节点挂了,那么这个节点就挂了(fail)。这是判断节点是否挂了的方法;

  • 那么如何判断集群是否挂了呢? -> 如果集群中任意一个节点挂了,而且该节点没有从节点(备份节点),那么这个集群就挂了。这是判断集群是否挂了的方法;

  • 那么为什么任意一个节点挂了(没有从节点)这个集群就挂了呢? -> 因为集群内置了16384个slot(哈希槽),并且把所有的物理节点映射到了这16384[0-16383]个slot上,或者说把这些slot均等的分配给了各个节点。当需要在Redis集群存放一个数据(key-value)时,redis会先对这个key进行crc16算法,然后得到一个结果。再把这个结果对16384进行求余,这个余数会对应[0-16383]其中一个槽,进而决定key-value存储到哪个节点中。所以一旦某个节点挂了,该节点对应的slot就无法使用,那么就会导致集群无法正常工作。

  • 综上所述,每个Redis集群理论上最多可以有16384个节点。

二、集群搭建需要的环境 2.1 Redis集群至少需要3个节点,因为投票容错机制要求超过半数节点认为某个节点挂了该节点才是挂了,所以2个节点无法构成集群。 2.2 要保证集群的高可用,需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。因为我没有那么多服务器,也启动不了那么多虚拟机,所在这里搭建的是伪分布式集群,即一台服务器虚拟运行6个redis实例,修改端口号为(7001-7006),当然实际生产环境的Redis集群搭建和这里是一样的。 2.3 安装ruby 三、集群搭建具体步骤如下(注意要关闭防火墙) 3.1 在usr/local目录下新建redis-cluster目录,用于存放集群节点 新建Redis集群目录 3.2 把redis目录下的bin目录下的所有文件复制到/usr/local/redis-cluster/redis01目录下,不用担心这里没有redis01目录,会自动创建的。操作命令如下(注意当前所在路径):

cp -r redis/bin/ redis-cluster/redis01
1

在这里插入图片描述 3.3 删除redis01目录下的快照文件dump.rdb,并且修改该目录下的redis.cnf文件,具体修改两处地方:一是端口号修改为7001,二是开启集群创建模式,打开注释即可。分别如下图所示: 删除dump.rdb文件 删除dump.rdb文件 修改端口号为7001,默认是6379 在这里插入图片描述 将cluster-enabled yes 的注释打开 在这里插入图片描述 3.4 将redis-cluster/redis01文件复制5份到redis-cluster目录下(redis02-redis06),创建6个redis实例,模拟Redis集群的6个节点。然后将其余5个文件下的redis.conf里面的端口号分别修改为7002-7006。分别如下图所示: 创建redis02-06目录 在这里插入图片描述

分别修改redis.conf文件端口号为7002-7006 在这里插入图片描述 3.5 接着启动所有redis节点,由于一个一个启动太麻烦了,所以在这里创建一个批量启动redis节点的脚本文件,命令为start-all.sh,文件内容如下:

cd redis01
./redis-server redis.conf
cd ..
cd redis02
./redis-server redis.conf
cd ..
cd redis03
./redis-server redis.conf
cd ..
cd redis04
./redis-server redis.conf
cd ..
cd redis05
./redis-server redis.conf
cd ..
cd redis06
./redis-server redis.conf
cd ..
​
12345678910111213141516171819

3.6 创建好启动脚本文件之后,需要修改该脚本的权限,使之能够执行,指令如下:

chmod +x start-all.sh
1

在这里插入图片描述 3.7 执行start-all.sh脚本,启动6个redis节点 在这里插入图片描述3.8 ok,至此6个redis节点启动成功,接下来正式开启搭建集群,以上都是准备条件。大家不要觉得图片多看起来冗长所以觉得麻烦,其实以上步骤也就一句话的事情:创建6个redis实例(6个节点)并启动。 要搭建集群的话,需要使用一个工具(脚本文件),这个工具在redis解压文件的源代码里。因为这个工具是一个ruby脚本文件,所以这个工具的运行需要ruby的运行环境,就相当于java语言的运行需要在jvm上。所以需要安装ruby,指令如下:

yum install ruby
1

然后需要把ruby相关的包安装到服务器,我这里用的是redis-3.0.0.gem,大家需要注意的是:redis的版本和ruby包的版本最好保持一致。 将Ruby包安装到服务器:需要先下载再安装,如图 在这里插入图片描述 安装命令如下:

gem install redis-3.0.0.gem
1

在这里插入图片描述

3.9 上一步中已经把ruby工具所需要的运行环境和ruby包安装好了,接下来需要把这个ruby脚本工具复制到usr/local/redis-cluster目录下。那么这个ruby脚本工具在哪里呢?之前提到过,在redis解压文件的源代码里,即redis/src目录下的redis-trib.rb文件。 在这里插入图片描述在这里插入图片描述 3.10 将该ruby工具(redis-trib.rb)复制到redis-cluster目录下,指令如下:

cp redis-trib.rb /usr/local/redis-cluster
1

然后使用该脚本文件搭建集群,指令如下:

./redis-trib.rb create --replicas 1 47.106.219.251:7001 47.106.219.251:7002 47.106.219.251:7003 47.106.219.251:7004 47.106.219.251:7005 47.106.219.251:7006
1

注意:此处大家应该根据自己的服务器ip输入对应的ip地址! 在这里插入图片描述

中途有个地方需要手动输入yes即可 在这里插入图片描述 至此,Redi集群搭建成功!大家注意最后一段文字,显示了每个节点所分配的slots(哈希槽),这里总共6个节点,其中3个是从节点,所以3个主节点分别映射了0-5460、5461-10922、10933-16383solts。

3.11 最后连接集群节点,连接任意一个即可:

redis01/redis-cli -p 7001 -c 
1

注意:一定要加上-c,不然节点之间是无法自动跳转的!如下图可以看到,存储的数据(key-value)是均匀分配到不同的节点的: 在这里插入图片描述

四、结语 呼~~~长舒一口气…终于搭建好了Redis集群。 整个过程其实挺简单,本篇主要正对入门级别的小伙伴,插入了很多图片,所以显得冗长,希望大家多多理解,如果不当之处,还望及时指正~

最后,加上两条redis集群基本命令: 1.查看当前集群信息

cluster info
1

2.查看集群里有多少个节点

cluster nodes
1

http://chatgpt.dhexx.cn/article/aMQEImy1.shtml

相关文章

什么是TCN?

TCN(Two-way communication network)即双向通信网络。使用socks5技术,通过特定的中转服务器完成数据传输。 在服务器端部署完成后,用户需要按照指定的密码、加密方式和端口使用客户端软件与其连接。在成功连接到服务器后&#xff…

MS-TCN: Multi-Stage Temporal Convolutional Network for Action Segmentation

论文题目:Multi-Stage Temporal Convolutional Network for Action Segmentation 原文地址:https://arxiv.org/abs/1903.01945 这篇文章涉及的是视频的行为分割问题(Action Segmentation),也就是对视频(vi…

TCN时间卷积网络介绍

绪论 TCN, Temporal Convolutional Network,时间卷积网络,是一种能够处理时间序列数据的网络结构,论文还评为 2018年10大论文。 1. 模型 输入: x 0 , x 1 , . . . , x t {x_0, x_1,..., x_t} x0​,x1​,...,xt​ 输出: y 0 , …

TCN: TEMPORAL CONVOLUTIONAL NETWORKS

搬运自:Raushan Roy-TEMPORAL CONVOLUTIONAL NETWORKS Learning sequences efficiently and effectively Until recently the default choice for sequence modeling task was RNNs because of their great ability to capture temporal dependencies in sequenti…

【深度学习论文阅读】TCN:An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence

2018年人工智能十佳论文之一:TCN 论文地址:An Empirical Evaluation of Generic Convolutional and Recurrent Networks for Sequence Modeling 项目地址:TCN的github链接 文章目录 1. ABSTRACT2. INTRODUCTION & BACKGROUND2.1 Temporal…

wavenet及TCN

一切皆卷积——包括时序相关任务 1.wavenet1.1 wavenet的pytorch实现1.1.1 wavenet类1.1.2 ResidualConv1dGLU 1.2 wavenet在纳米孔测序中的应用 2.Temporal Convolutional Network(TCN)2.1 TCN模型介绍2.3 TCN代码实现及可视化 3.wavenet/TCN的优点参考…

时序模型(一)—— TCN 时间卷积网络

一、 概述 TCN是18年提出的时序卷积神经网络模型。 时序问题建模,通常采用RNN循环神经网络及其相关变种,比如LSTM、GRU等,这里将卷积神经网络通过膨胀卷积达到抓取长时依赖信息的效果,TCN在一些任务上甚至能超过RNN相关模型。 …

【学习日志】【TCN】时间序列卷积神经网络(1)

1. ask bing(Temporal Convolutional Network) 问:“我对CNN、RNN、TCN等神经网络没有任何基础,你能直观地给我讲一下TCN的结构、输入输出和原理吗?” bing对TCN的解释如下: TCN是一种用于处理序列数据的神…

LSTM的备胎,用卷积处理时间序列——TCN与因果卷积(理论+Python实践)

什么是TCN TCN全称Temporal Convolutional Network,时序卷积网络,是在2018年提出的一个卷积模型,但是可以用来处理时间序列。 卷积如何处理时间序列 时间序列预测,最容易想到的就是那个马尔可夫模型: P ( y k ∣ x…

python深度学习之TCN实例

1.TCN的介绍 近些年,关于时间序列、自然语言处理等任务大家一般都会想到RNN、LSTM、GRU,一维CNN以及后面延伸出的Bi-Lstm、ConvLstm等等,这是因为RNN天生可以记住以前时段的信息,而传统的神经网络并不具有这个功能。卷积神经网络…

时间卷积网络TCN:时间序列处理的新模型

这篇文章回顾了基于TCN的解决方案的最新创新。我们首先介绍了一个运动检测的案例研究,并简要回顾了TCN架构及其相对于传统方法的优势,如卷积神经网络(CNN)和递归神经网络(RNN)。然后,我们介绍了一些使用TCN的应用,包括改进交通预测…

TCN论文及代码解读总结

前言:传统的时序处理,普遍采用RNN做为基础网络模型,如其变体LSTM、GRU、BPTT等。但是在处理使用LSTM时时序的卷积神经网络 目录 论文及代码链接一、论文解读1、 摘要2、引言(摘)3、时序卷积神经网络(Temporal Convolutional Networks)3.1 因果…

轨道交通中TCN、TRDP、TSN的理解

轨道交通中TCN、TSN、TRDP的理解 1 TCN2 TSN3 TRDP———————————————————————— 1 TCN TCN(Train Communication Network)是列车通信网络,是列车通信网络的总称。 在IEC 61375-1 以及GB/T 28029.1中都详细的介绍了列车…

深度学习 + 论文详解: TCN_时间卷积网络_原理与优势

论文链接 TCN: https://arxiv.org/pdf/1803.01271.pdf p.s. TCN stands for Temporal Convolutional Network. 它是除了 RNN architecture 之外的第二种可以分析时间性数据的架构 更多文章将在公众号:AI 算法辞典 首发! 前言 RNN 从最一开始发展以来…

【python量化】用时间卷积神经网络(TCN)进行股价预测

写在前面 下面这篇文章首先主要简单介绍了目前较为先进的时间序列预测方法——时间卷积神经网络(TCN)的基本原理,然后基于TCN的开源代码,手把手教你如何通过时间卷积神经网络来进行股价预测,感兴趣的读者也可以基于此模…

时域卷积网络(Temporal Convolutional Network,TCN)

TCN基本结构 时域卷积网络(Temporal Convolutional Network,TCN)由Shaojie Bai et al.在2018年提出的,可以用于时序数据处理,详细内容请看论文。 1.因果卷积(Causal Convolution) 因果卷积如上…

时域卷积网络TCN详解:使用卷积进行序列建模和预测

CNN经过一些简单的调整就可以成为序列建模和预测的强大工具 尽管卷积神经网络(CNNs)通常与图像分类任务相关,但经过适当的修改,它已被证明是进行序列建模和预测的有价值的工具。在本文中,我们将详细探讨时域卷积网络(TCN)所包含的基本构建块&…

TCN代码详解-Torch (误导纠正)

1. 绪论 TCN网络由Shaojie Bai, J. Zico Kolter, Vladlen Koltun 三人于2018提出。对于序列预测而言,通常考虑循环神经网络结构,例如RNN、LSTM、GRU等。他们三个人的研究建议我们,对于某些序列预测(音频合…

时序CNN基础——TCN

自用~~笔记~~ 知识补充: 空洞卷积(膨胀卷积)——Dilated Conv 在标准卷积的基础上注入空洞,以此来增加感受野(reception field)。因此增加一个超参:膨胀率,指kernel的间隔数量。 因…

时间卷积网络(TCN):结构+pytorch代码

文章目录 TCNTCN结构1-D FCN的结构因果卷积(Causal Convolutions)膨胀因果卷积(Dilated Causal Convolutions)膨胀非因果卷积(Dilated Non-Causal Convolutions)残差块结构 pytorch代码讲解 TCN TCN(Temporal Convolutional Network)是由Shaojie Bai et al.提出的,p…