直播系统,Redis集群搭建的代码一览

news/2025/3/24 20:27:09/文章来源:https://www.cnblogs.com/yunbaomengnan/p/18786302

Redis 集群搭建

目前为了方便演示,在一台机器上以不同的端口启动 6 个服务。

进行之前,先进行单节点上的前 8 个步骤。

1. 集群搭建
(1)准备 6 份配置文件。

cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6381.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6382.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6383.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6384.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6385.conf
cp /usr/local/redis/conf/redis.conf /usr/local/redis/conf/redis-6386.conf

(2)分别修改 redis-6381.conf、 redis-6382.conf、 redis-6383.conf、 redis-6384.conf、 redis-6385.conf、 redis-6386.conf 文件中的以下内容。

# 端口号(如果同一台服务器上启动,注意要修改为不同的端口)
port 6381
# 开启集群
cluster-enabled yes
# 会自动生成在上面配置的dir目录下(如果同一台服务器上启动,注意要修改为不同的端口)
cluster-config-file nodes-6381.conf
cluster-node-timeout 5000
# 这个文件会自动生成(如果同一台服务器上启动,注意要修改为不同的端口)
pidfile /var/run/redis_6381.pid 

(3)启动 6 个 redis 实例。

/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6381.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6382.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6383.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6384.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6385.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-6386.conf

(4)创建 cluster。

/usr/local/redis/bin/redis-cli --cluster create 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 127.0.0.1:6386 --cluster-replicas 1

5、集群检验和测试。

# 检查集群,查看所有节点信息
/usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 6381 cluster nodes# 执行后的信息(节点id ip+端口 角色 masterid 处理的ping数量 最后一个pong时间 节点配置版本 节点连接状态 slot槽分配情况)
386bfa4ad82ecf67800fb957899e6c0621cb73a6 127.0.0.1:6386@16386 slave 5352c77a1245f67f89bfaeb47caa04eb534e6724 0 1597911585458 1 connected
21a8ab725f458901e2d23781a9757b8ada023af1 127.0.0.1:6385@16385 slave 103e8326a6d583064a4d4448d285343536490659 0 1597911586000 3 connected
5352c77a1245f67f89bfaeb47caa04eb534e6724 127.0.0.1:6381@16381 myself,master - 0 1597911583000 1 connected 0-5460
103e8326a6d583064a4d4448d285343536490659 127.0.0.1:6383@16383 master - 0 1597911585052 3 connected 10923-16383
2d40bdd3bc9b01d67362110217123debb6f780cf 127.0.0.1:6384@16384 slave 2cd4da5b1a6d361216f620a21ec4e50da21a2e8a 0 1597911586582 2 connected
2cd4da5b1a6d361216f620a21ec4e50da21a2e8a 127.0.0.1:6382@16382 master - 0 1597911586479 2 connected 5461-10922# 测试 Redis Cluster 的一种简单方法是使用 redis-cli 命令行实用程序。
# -c 是支持cluster重定向。
/usr/local/redis/bin/redis-cli -c -h 127.0.0.1 -p 6381
# 然后执行一些命令,例如:
> set a 1# 查看一个 key a 属于哪一个槽位
> cluster keyslot a

2. 集群 slot 数量整理 reshard。
/usr/local/redis/bin/redis-cli --cluster help 可以查看所有这个命令和子命令的帮助信息。
默认是 master 平均分了 0-16383 的所有虚拟 slot。可以进行调整,部分节点放多一点 slot (槽或者位置)。

/usr/local/redis/bin/redis-cli --cluster reshard <host>:<port> --cluster-from <node-id> --cluster-to <node-id> --cluster-slots <number of slots> --cluster-yes

重新检查集群。

/usr/local/redis/bin/redis-cli --cluster check 127.0.0.1:6381

3. 测试自动故障转移。
cluster 集群不保证数据一致,数据也可能丢失。
首先是运行客户端不断的写入或读取数据,以便能够发现问题。
然后是模拟节点故障:找一个主节点关闭,主从故障切换的过程中,这个时间段的操作,客户端而言,只能是失败。
官方描述 https://redis.io/topics/cluster-spec,There is always a window of time when it is possible to lose writes during partitions.(分区的时间窗口内总是有可能丢失写操作) 。
4. 手动故障转移。
可能某个节点需要维护(机器下线、硬件升级、系统版本调整等等场景),需要手动的实现转移。
在 slave 节点上执行命令。

CLUSTER FAILOVER

注:CLUSTER help 可以看到帮助文档和简介。 相对安全的做法。
5. 扩容。

# 1、 启动新节点
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6387.conf# 2、 加入到已经存在的集群作为master
/usr/local/redis/bin/redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6382
# 本质就是发送一个新节点通过 CLUSTER MEET 命令加入集群
# 新节点没有分配 hash 槽# 3、 加入到已经存在的集群作为 slave
/usr/local/redis/bin/redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6382 --cluster-slave
# 可以手工指定 master,否则就是选择一个 slave 数量较少的master 
/usr/local/redis/bin/redis-cli --cluster add-node 127.0.0.1:6387 127.0.0.1:6382 --cluster-slave --cluster-master-id <node-id>
# 还可以将空 master,转换为 slave(终端操作)。
cluster replicate <master-node-id># 4、 检查集群
/usr/local/redis/bin/redis-cli --cluster check 127.0.0.1:6382

6. 缩容(删除节点)。

# 注意:删除 master 的时候要把数据清空或者分配给其他主节点
/usr/local/redis/bin/redis-cli --cluster del-node 127.0.0.1:6381 <node-id>

以上就是直播系统,Redis集群搭建的代码一览, 更多内容欢迎关注之后的文章

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

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

相关文章

ASE13N45-ASEMI照明驱动专用ASE13N45

ASE13N45-ASEMI照明驱动专用ASE13N45编辑:LL ASE13N45-ASEMI照明驱动专用ASE13N45 型号:ASE13N45 品牌:ASEMI 封装:TO-220F 最大漏源电流:13A 漏源击穿电压:450V 批号:最新 RDS(ON)Max:0.45Ω 引脚数量:3 沟道类型:N沟道MOS管 封装尺寸:如图 特性:MOS管、N沟道M…

CORIDIC算法学习记录

目录问题问题分析CORDIC算法原理逼近方法及步骤逼近过程中的符号确定根据角度计算正切值举个例子逼近\(\theta=50^{\degree}\)并求其正切值 CORDIC算法叫坐标旋转数字计算法,由J.Volder在1959年提出,可以快速且简单的计算角度的数值。 问题已知\(y,x\),如何快速计算角度\(\t…

郑州商转公直还办理流程-2025年3月

先叠个甲,因为时间、地点、银行及每个人的情况可能都不一样,最终流程和结果可能也不一样,建议根据自己情况提前咨询,以下为我个人真实经历,仅供参考。 时间线:1.2025.3.10周一,去贷款行办理《同意提前结清商业贷款函》、《同意提前结清商业贷款函》、余额证明,12号周三…

设计一种将方向盘的旋转角度转换为USB信号的装置,用于汽车驾驶模拟

量角器是一种专门的设备,用于高精度测量旋转角度,并通过USB将这些测量结果传输到主机。它集成了一个精确的编码器,能够以1度的精度测量角度。树莓派Pico通过可编程I/O (Programmable I/O)高速读取编码器信号,而TinyUSB库则用于与主机共享数据。该量角器的开发主要是为了解决…

郑州商转公直还办理流程

时间线:1.2025.3.10周一,去贷款行办理《同意提前结清商业贷款函》、《同意提前结清商业贷款函》、余额证明,12号周三电话我已出好,可以去公积金中心办商转公了;2.2025.3.17周一,去公积金中心办理商转公直还,周四下午收到已放款短信,周五早上接到贷款行电话提醒去办提前…

构建一个2.4GHz无线网络分析仪,可兼作远程(LoRa)收发器

快速预览 呈现DualCast !我最新的(也是最先进的)项目。它是一种紧凑型无线设备,除了能够通过LoRa技术发送915MHz AES-128加密的远程命令外,还能够分析2.4GHz Wi-Fi网络上的实时流量。(默认设置下最高可达一公里!)翻转180以激活Wi-Fi模式。此外,它还配备了许多传感器,如用于…

Vue3 关闭vueDevTools工具

1、文件 vite.config.ts 2、注释

SecureCRT SecureFX 9.6.2 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输

SecureCRT & SecureFX 9.6.2 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输SecureCRT & SecureFX 9.6.2 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输 rock-solid terminal emulation & flexible secure file transfer for com…

deepseek模型部署到本地使用+投喂数据训练

近期,由于国外大量攻击,导致 DeepSeek 经常无法使用;另外,许多朋友希望在本地搭建自己的知识库,以保护自己的资料不被外泄。因此,越来越多的人希望能够在本地部署 DeepSeek,但对于技术难度有所担忧。别担心,这篇教程将为你扫清所有障碍!从环境搭建到模型运行,每一步都…

Axure RP上使用 Font Awesome 图标库

Axure RP 可以使用 Web Fonts,这让置入 Font Awesome 变得非常方便。Font Awesome 是一种字体,只是主要针对图标使用,而非我们所熟知的中文/西文字体。 进行简单的几步设置,就可以在自己项目上面使用 Font Awesome 的 1609 个免费图标。图标覆盖广泛,风格也相对统一。 一、…

读DAMA数据管理知识体系指南27文件和内容管理概念(上)

读DAMA数据管理知识体系指南27文件和内容管理概念(上)1. 文件和内容管理 1.1. 文件和内容管理是指针对存储在关系型数据库之外的数据和信息的采集、存储、访问和使用过程的管理 1.2. 重点在于保持文件和其他非结构化或半结构化信息的完整性,并使这些信息能够被访问 2. 业务驱…