Redis 集群的三种模式:一主一从、一主多从和多主多从
本文记述了博主在学习 Redis 在大型项目下的使用方式,包括如何设置Redis主从节点,应对突发状况如何处理。在了解了Redis的集群搭建和相关的主从复制以及哨兵模式的知识以后,进而想要了解 Redis 集群如何使用,如何正确使用,在什么场景下使用什么样的集群模式。本文不涉及集群搭建。
文章目录
- 一、各种 Redis 集群对比
- 二、一主一从
- 1、集群网络配置
- 2、主从复制原理
- 3、故障转移机制(哨兵)
- 三、一主多从
- 1、集群网络配置
- 2、主从复制原理(并行机制)
- 3、故障转移机制(哨兵)
- 四、多主多从
- 1、集群网络配置
- 2、主从复制原理(异步机制)
- 3、故障转移机制(哨兵)
- 4、多主多从注意事项
一、各种 Redis 集群对比
Redis集群一般有以下三种常见分类:一主一从、一主多从和多主多从,其对比如下。
架构 | 一主一从 | 一主多从 | 多主多从 |
---|---|---|---|
架构复杂度 | 最简单,一个主节点和一个从节点 | 较复杂,一个主节点和多个从节点 | 最复杂,多个主节点和从节点,分片 |
数据冗余 | 最低,两份数据 | 较高,多份数据 | 最高,多份数据,分片备份 |
读性能 | 低,一个从节点分担读请求 | 高,多个从节点分担读请求 | 高,多个从节点分担读请求 |
写性能 | 低,写操作集中在主节点 | 低,写操作集中在主节点 | 高,写操作分散到多个主节点高 |
可用性 | 最低,依赖哨兵或集群切换 | 较高,依赖哨兵或集群切换 | 最高,分片和哨兵或集群切换 |
配置与运维 | 最简单,部署成本低 | 较复杂,运维难度适中 | 最复杂,运维难度高 |
适用场景 | 小型应用、开发测试环境 | 读多写少的场景 | 大型生产环境、高并发场景 |
搭建集群过程中的必备技巧:
- 配置优化:合理设置复制延迟参数:根据实际业务需求,调整
repl-ping-slave-period
和repl-timeout
等参数,以平衡复制的实时性和网络资源占用。 - 优化数据同步方式:在从节点首次连接主节点时,主节点会进行全量同步,可以通过设置
repl-diskless-sync
参数为yes
,启用无磁盘复制,减少磁盘I/O
操作。 - 监控主从状态:定期使用
info replication
命令查看主从复制的状态,确保从节点与主节点的连接正常,数据同步没有异常。 - 设置延迟报警:当主从复制延迟过高时,可能会对业务产生影响,可以通过监控工具设置延迟报警阈值,及时发现并解决问题。
- 定期备份主节点数据:除了依赖主从复制进行数据备份外,还应定期对主节点的数据进行全量备份,以便在出现严重故障时能够快速恢复。
- 测试备份恢复流程:定期测试备份数据的恢复流程,确保在需要时能够顺利恢复数据,避免因备份数据损坏或恢复流程不熟悉而导致数据丢失。
二、一主一从
这种集群架构较为简单,只有一个主节点和一个从节点。
- 主节点负责写操作,从节点通过复制主节点的数据来保持数据一致性。
- 数据冗余较低,只有主节点和从节点两份数据,如果主节点和从节点同时出现故障,可能会导致数据丢失。适合对数据可靠性要求不高的场景。
- 写性能主要依赖于主节点,从节点主要用于读操作,可以分担部分读负载,在高并发写操作时,可能会成为性能瓶颈。
- 如果主节点故障,从节点可以通过故障转移机制自动切换为主节点,但切换过程可能会有一定读延迟,并且在切换过程中,可能会出现短暂的服务不可用。
- 资源消耗相对较少,只需要两台服务器即可,适合资源有限的环境,部署和维护成本较低,适合小型应用或测试环境。
1、集群网络配置
主节点配置:
# redis-master.conf
bind 0.0.0.0
port 6379
daemonize yes
从节点配置:
# redis-slave.conf
bind 0.0.0.0
port 6380
daemonize yes
replicaof 127.0.0.1 6379 # 指定主节点地址
# 如果使用Redis 5.0及以上版本,slaveof 已被替换为 replicaof 。
验证主从状态:
# 在主节点查看复制信息
redis-cli -p 6379 info replication
2、主从复制原理
Redis主从复制通过异步复制实现数据的冗余备份和读写分离:
- 主节点(Master):负责处理所有写操作,并将写命令异步传播给从节点。
- 从节点(Slave):接收主节点的数据副本,处理读请求,支持横向扩展读性能。
- 全量同步(Full Sync):从节点首次连接主节点时,主节点生成RDB快照并发送给从节点,从节点加载数据。
- 增量同步(Partial Sync):后续主节点的写操作通过
replication buffer
实时同步到从节点。
3、故障转移机制(哨兵)
在Redis一主一从集群中,故障转移通常需要借助哨兵(Sentinel)机制来实现。
1、哨兵模式常见的三大步骤:
- 监控:哨兵节点定期检查主从节点的健康状态。
- 通知:当主节点故障时,哨兵节点会通过 Raft 算法选举一个领导者哨兵。
- 故障转移:领导者哨兵会选择一个从节点提升为主节点,并通知其他从节点切换到新的主节点。
2、哨兵的工作机制
- 每个哨兵节点会定期向主从节点发送心跳命令(PING)以检测其健康状态。
- 如果超过配置的
down-after-milliseconds
时间,主节点仍未响应,则哨兵会认为主节点主观下线。 - 当超过
quorum
数量的哨兵节点都认为主节点下线时,会触发故障转移。 - 哨兵节点通过
Raft
算法选举一个领导者哨兵,由领导者负责故障转移。
哨兵会监控主从节点的状态,当主节点故障时,哨兵会触发故障转移,即哨兵会根据一定的规则选举一个新的从节点晋升为主节点。
3、哨兵的选举规则
- 优先选择优先级最高的从节点(可通过slave-priority配置)。
- 若优先级相同,选择复制偏移量最大的从节点(数据最完整)。
- 若仍相同,根据节点的runID选择,runID越小说明重启次数越少。
- 最后,哨兵会更新所有从节点的配置文件,使其指向新的主节点,并通知客户端新的主节点地址。
三、一主多从
一主多从集群架构常见于大型网站的缓存服务,有一个主节点和多个从节点。这种集群的配置方式和一主一从差不多,区别就在于多了些从节点,而我们知道,从节点主要是用于读操作,主节点是用于写操作。所以这种集群方式不难看出适用于读多写少的情境中。
- 主节点负责写操作,多个从节点通过复制主节点的数据来提供读服务,可以有效分担读负载,所以适用读操作较多、写操作较少的场景。
- 数据冗余较高,主节点和多个从节点都有数据副本,即使某个从节点故障,其他从节点仍然可以提供服务,但主节点故障仍可能影响写操作,在高并发写操作时,可能会成为性能瓶颈,但不会影响到读操作。
- 哨兵或集群模式可以自动切换主节点,多个从节点提供更好的冗余,切换过程可能会有一定读延迟,短暂的切换过程可能会影响到写操作,但是不影响服务的读操作,适合对高可用性有一定要求的场景。
- 配置稍复杂,需要配置多个从节点,运维难度适中,需要监控多个从节点的状态。
1、集群网络配置
主节点配置:
# redis-master.conf
port 6379
bind 0.0.0.0
requirepass your_password # 如果需要密码认证,设置密码
从节点1配置:
# redis-slave.conf
port 6380
bind 0.0.0.0
replicaof 127.0.0.1 6379 # 指定主节点地址
masterauth your_password # 如果主节点设置了密码,需要配置
从节点2配置:
# redis-slave.conf
port 6381
bind 0.0.0.0
replicaof 127.0.0.1 6379 # 指定主节点地址
masterauth your_password # 如果主节点设置了密码,需要配置
2、主从复制原理(并行机制)
Redis主从复制通过数据同步实现读写分离和数据备份,主从复制的主要方式和一主一从集群类似,例如全量同步和增量同步,有一点不同的是关于主从复制的并行机制,主节点要同时向多个从节点发送同步信息。
并行机制:当多个从节点连接到主节点时,主节点会为每个从节点维护一个独立的复制连接和状态。主节点会将写命令同时发送给所有从节点,而不是逐一发送。这种机制确保了主节点可以高效地处理多个从节点的复制请求,而不会因为从节点数量的增加而显著降低性能。
过程可以分为以下几个关键步骤,这些步骤对每个从节点都是独立进行的。
- 连接建立:从节点启动时,会根据配置文件中的
replicaof
指令连接到主节点。主节点会为每个从节点分配一个独立的复制连接。 - 全量同步和增量同步:
- 当从节点首次连接到主节点时,主节点会生成一个RDB快照文件,并将其发送给从节点。
- 在发送RDB文件期间,主节点会将新产生的写命令记录在复制积压缓冲区中。
- 从节点加载RDB文件后,主节点会将复制积压缓冲区中的命令发送给从节点。
- 部分同步:
- 如果从节点与主节点的连接短暂中断后重新连接,主节点会检查从节点的复制偏移量。
- 如果从节点的偏移量在复制积压缓冲区的范围内,主节点会通过部分同步的方式,仅发送从节点缺失的命令,而无需重新发送整个RDB文件。
- 命令同步:主节点在处理写命令时,会将这些命令实时发送给所有从节点,从节点接收到命令后,会立即执行这些命令,以确保数据的一致性。
这里延伸到主节点如何做到同时处理多个从节点的复制请求?
- 多路复用(I/O多路复用):Redis 使用 I/O 多路复用技术(如epoll、kqueue等),能够同时监听和处理多个从节点的连接。主节点通过事件循环机制,高效地处理来自多个从节点的复制请求。
- 复制缓冲区:主节点为每个从节点维护一个独立的复制缓冲区,用于存储发送给从节点的命令。主节点会将写命令写入每个从节点的复制缓冲区,然后通过网络发送给从节点。
- 并行发送:主节点会将写命令同时发送给所有从节点,而不是逐一发送。这种并行机制确保了主从复制的高效性,即使有多个从节点,也不会显著增加主节点的负载。
主从复制的并行机制使得主节点能够高效地处理多个从节点的复制请求。主节点的性能主要受限于网络带宽和磁盘I/O(在全量同步时)。主节点可以同时支持多个从节点,但随着从节点数量的增加,主节点的网络带宽和CPU资源可能会成为瓶颈。
实际场景中的注意事项:
- 网络延迟:如果从节点分布在不同的地理位置,网络延迟可能会影响复制的实时性。在这种情况下,可以考虑使用靠近主节点的从节点作为中间节点,进一步扩展从节点。
- 复制积压缓冲区大小:复制积压缓冲区的大小需要根据实际场景进行调整。如果缓冲区过小,可能会导致部分同步失败,从而触发全量同步。
- 故障切换:在使用哨兵模式时,哨兵会自动处理主节点故障切换。从节点会自动切换到新的主节点,继续进行复制。
3、故障转移机制(哨兵)
Redis哨兵模式是一种高可用解决方案,用于监控主从复制集群的健康状态,并在主节点故障时自动切换主节点。
哨兵节点配置文件(sentinel.conf)
# 哨兵节点配置
port 16379
sentinel monitor mymaster 127.0.0.1 6379 2 # 配置监控的主节点
sentinel down-after-milliseconds mymaster 5000 # 主节点无响应时间
sentinel failover-timeout mymaster 180000 # 故障转移超时时间
sentinel parallel-syncs mymaster 1 # 同步新主节点的从节点数量
sentinel auth-pass mymaster your_password # 主节点密码
启动哨兵节点
redis-server /path/to/sentinel.conf --sentinel
哨兵节点会自动发现其他哨兵节点,并通过 Raft 算法进行选举,通过监控和故障转移确保集群的高可用性。
四、多主多从
多主多从集群架构常见于大型生产环境、高并发读写场景、对高可用性要求极高的场景。
- 多个主节点和多个从节点,每个主节点有一个或多个对应的从节点。每个主节点独立处理一部分数据,通过分片机制实现数据分布,从节点作为备份,提供高可用性。
- 数据冗余最高,每个主节点都有一个从节点备份,且主节点之间通过分片机制进一步提升冗余,即使某个主节点或从节点故障,其他节点仍然可以正常工作,整体可靠性最高。
- 多个从节点可以分担读请求,读性能高,写操作分散到多个主节点,适合高并发读写场景。
- 哨兵或集群模式可以自动切换主节点,且主节点之间通过分片机制进一步提升高可用性。
- 配置复杂,需要配置多个主节点和从节点,以及分片策略。
- 运维难度高,需要监控多个节点的状态,确保数据分片和故障转移的正确性。
1、集群网络配置
主节点配置:为每个主节点创建独立的配置文件,例如 redis-master1.conf
和 redis-master2.conf
,根据需要修改端口、日志路径和数据目录等配置。
port 6379 # 主节点监听端口
daemonize yes # 后台运行
pidfile /var/run/redis-master1.pid # 进程ID文件
logfile /var/log/redis-master1.log # 日志文件
dir /var/lib/redis-master1 # 数据存放目录
requirepass your_password # 设置访问密码(可选)
masterauth your_password # 设置主从复制时的密码(如果需要)
从节点配置:为每个从节点创建独立的配置文件,例如 redis-slave1.conf
和 redis-slave2.conf
,根据需要修改端口、主节点IP、日志路径和数据目录等配置。
port 6380 # 从节点监听端口
daemonize yes # 后台运行
pidfile /var/run/redis-slave1.pid # 进程ID文件
logfile /var/log/redis-slave1.log # 日志文件
dir /var/lib/redis-slave1 # 数据存放目录
replicaof <master_ip> 6379 # 指定主节点的IP和端口
requirepass your_password # 设置访问密码(如果需要)
masterauth your_password # 设置主从复制时的密码(如果需要)
根据配置文件启动主节点和从节点,重复命令以启动其他主节点和从节点。
redis-server /path/to/redis-master1.conf
redis-server /path/to/redis-slave1.conf
使用 redis-cli
验证主从复制关系是否成功:
redis-cli -p 6379 info replication # 查看主节点状态
redis-cli -p 6380 info replication # 查看从节点状态
主节点应显示为 master
,从节点应显示为 slave
。
2、主从复制原理(异步机制)
Redis多主多从架构允许多个主节点和多个从节点同时工作。每个主节点可以有多个从节点进行数据备份,同时主节点之间也可以通过配置相互同步数据。其中,多个主节点(master)和从节点(slave)之间的复制机制是实现数据一致性和高可用性的关键。
Redis 的主从复制是异步的,主节点将数据同步到从节点,从节点可以作为备份或分担读负载。在多主多从架构中,每个主节点可以有多个从节点,主节点负责写操作,从节点通过复制主节点的数据来保持数据一致性。
在多主多从架构中,每个主节点独立运行,互不干扰。主节点之间的写操作不会直接同步,每个主节点只负责将数据同步到自己的从节点。
从节点通过以下步骤进行主从复制:
- 全量同步:从节点首次连接主节点时,主节点会生成一个 RDB 快照文件并发送给从节点,从节点加载快照文件以获取主节点的完整数据。
- 增量同步:在全量同步完成后,主节点会将后续的写操作命令通过复制缓冲区实时发送给从节点,从节点根据这些命令更新本地数据。
在多主多从架构中,从节点可以作为主节点的备份。如果主节点故障,从节点可以通过哨兵(Sentinel)或集群(Cluster)模式自动切换为主节点。哨兵模式可以监控主节点的健康状态,并在主节点故障时自动从从节点中选择一个作为新的主节点。
Redis 原生并不支持多主节点之间的直接写操作同步。多主架构通常需要第三方解决方案或自定义逻辑来处理跨主节点的数据同步问题。例如,Redis Enterprise 提供了冲突无关的复制数据类型(CRDTs),允许跨地理分布的多主部署。
注意事项:
- 数据一致性:在多主架构中,需要特别注意数据一致性问题,尤其是在跨主节点同步数据时。
- 冲突处理:多主架构中可能会出现写冲突,需要通过冲突解决机制(如 CRDTs)来处理。
- 配置管理:确保主从节点的配置正确,并定期检查复制状态以确保数据同步正常。
3、故障转移机制(哨兵)
哨兵模式用于监控主从节点的状态,并在主节点故障时自动进行故障转移。
哨兵节点配置文件(sentinel.conf)
port 16379 # 哨兵节点监听端口
sentinel monitor mymaster <master_ip> 6379 2 # 监控主节点
sentinel down-after-milliseconds mymaster 5000 # 判定主节点失联的毫秒数
sentinel failover-timeout mymaster 60000 # 故障转移超时时间
sentinel parallel-syncs mymaster 1 # 同步新主节点的从节点数量
sentinel auth-pass mymaster your_password # 主节点密码(如果需要)
根据需要配置多个主节点的监控。
启动哨兵节点:
redis-sentinel /path/to/sentinel.conf
在多主多从集群中,每个主节点都需要一个哨兵监控配置。
4、多主多从注意事项
在大型项目中使用 Redis 多主多从架构时,需要注意以下关键点,以确保系统的高可用性、性能和可扩展性。
1、数据一致性与冲突管理:在多主架构中,多个主节点可以同时写入数据,这可能导致数据冲突。
- 分布式锁:在写操作前获取分布式锁,确保同一时间只有一个主节点可以修改特定数据。
- 数据分片策略:通过合理的分片策略(如一致性哈希)将数据分散到不同的主节点上,减少冲突的可能性。
2、故障转移与高可用性
- 哨兵模式(Sentinel):使用哨兵监控主节点的健康状态,当主节点故障时自动切换到从节点。
- 确保哨兵的配置正确,避免脑裂(split-brain)问题。
- 集群模式(Cluster):在集群模式下,Redis会自动处理故障转移。确保每个主节点至少有一个从节点,并且集群的配置正确。
3、性能优化
- 读写分离:将读操作分发到从节点,减轻主节点的负载,提升整体性能。
- 合理配置TTL:为临时数据设置合理的TTL(生存时间),避免内存浪费。
- 内存管理:监控Redis的内存使用情况,确保数据集能够完全放入内存中。
- 如果需要,可以配置数据淘汰策略。
4、部署与运维
- 节点数量与配置:至少部署三个主节点以防止网络分区问题。每个主节点应配置至少一个从节点。
- 监控与日志:使用工具如 Redis INFO 命令、Prometheus 等监控 Redis 实例的性能和健康状态。
- 网络带宽:确保网络带宽足以处理 Redis 节点之间的通信,特别是在数据同步和故障转移时。
5、数据持久化
- 根据应用需求选择合适的持久化策略(RDB、AOF或两者结合)。
- RDB适合快速恢复,但可能丢失部分数据。
- AOF更安全,但占用更多资源。
6、容量规划
- 了解数据特性:分析数据类型、大小和生命周期,合理规划内存容量。
- 负载预估:评估平均和峰值读写负载,选择合适大小的 Redis 实例,并预留扩展空间。
- 冗余与备份:通过哨兵或集群模式实现数据冗余,确保在节点故障时数据安全。
7、安全与访问控制
SSL/TLS
加密:在节点间通信时使用SSL/TLS
加密,确保数据传输安全。- 访问控制:限制Redis实例的访问权限,仅允许必要的用户和服务访问。
通过遵循这些最佳实践,可以有效提升 Redis 多主多从架构在大型项目中的稳定性和性能表现。
相关文章:

Redis 集群的三种模式:一主一从、一主多从和多主多从
本文记述了博主在学习 Redis 在大型项目下的使用方式,包括如何设置Redis主从节点,应对突发状况如何处理。在了解了Redis的集群搭建和相关的主从复制以及哨兵模式的知识以后,进而想要了解 Redis 集群如何使用,如何正确使用…...
面试题——简述Vue 3的服务器端渲染(SSR)是如何工作的?
面试题——简述Vue3的服务器端渲染(SSR)是如何工作的? 服务器端渲染(SSR)已经成为了一个热门话题。Vue 3,作为一款流行的前端框架,也提供了强大的SSR支持。那么,Vue 3的SSR究竟是如…...
2.25DFS和BFS刷题
洛谷P1101单词方阵:用sta存字符串,for找到‘y的位置,然后dfs对字符串用for进行一个一个的判断,不符合就return,下面再用for进行book标记,能执行下面的for说明上面没有return,所以说明找到&#…...

C语言基本知识------指针(4)
1. 回调函数是什么? 回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数 时,被调⽤的函数就是回调函数。 void qsort(void base,//指针…...

【OMCI实践】ONT上线过程的omci消息(六)
引言 在前四篇文章中,主要介绍了ONT上线过程的OMCI交互的第一、二、三个阶段omci消息,本篇介绍第四个阶段,OLT下发配置到ONT。前三个阶段,每个厂商OLT和ONT都遵循相同标准,OMCI的交换过程大同小异。但第四个阶段&…...

C语言(13)------------>do-while循环
1.do-while循环的语法 我们知道C语言有三大结构,顺序、选择、循环。我们可以使用while循环、for循环、do-while循环实现循环结构。之前的博客中提及到了前两者的技术实现。可以参考: C语言(11)------------->while循…...
腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票
腾讯SQL面试题解析:如何找出连续5天涨幅超过5%的股票 作者:某七年数据开发工程师 | 2025年02月23日 关键词:SQL窗口函数、连续问题、股票分析、腾讯面试题 一、问题背景与难点拆解 在股票量化分析场景中,"连续N天满足条件"是高频面试题类型。本题要求在单表stoc…...

HybridCLR+Adressable+Springboot热更
本文章会手把手教大家如何搭建HybridCLRAdressableSpringboot热更。 创作不易,动动发财的小手点个赞。 安装华佗 首先我们按照官网的快速上手指南搭建一个简易的项目: 快速上手 | HybridCLR 注意在热更的代码里添加程序集。把用到的工具放到程序集里…...

电脑连接示波器显示波形
通过网线连接示波器和电脑,将示波器波形显示在电脑上直接复制图片至报告中,以下是配置步骤。 一、设备 网线,Tektronix示波器,电脑 二、使用步骤 1.用网线连接电脑和示波器 2.电脑关掉WiFi,查看IPv4网关地址…...
监听其他音频播放时暂停正在播放的音频
要实现当有其他音频播放时暂停当前音频,你可以使用全局事件总线或 Vuex 来管理音频播放状态。这里我将展示如何使用一个简单的事件总线来实现这个功能。 首先,你需要创建一个事件总线。你可以在项目的一个公共文件中创建它,例如 eventBus.js…...

小熊猫C++安装EasyX最新教程
1.下载EasyX 官网下载: EasyX 官网https://easyx.cn/ 2.将下载文件改格式解压 注意:下载文件为.exe格式,需将其格式改成.zip格式! 如何改格式? a.若文件名字未显示.exe (1).打开此电脑 (2).点击上端的查看 (…...

安装VM和Centos
安装VM 一、打开虚拟机 二、选择典型 三、选择光盘 四、指定虚拟机位置 五、设置磁盘大小并拆分为多个文件 六、完成 安装Centos 一、上述过程完成后我们直接打开虚拟机 二、语言选择中文 三、默认安装位置并点击完成 四、点击开始安装 五、点击设置密码 设置完密码后点击完成…...
git 命令 设置别名
在Git中,您可以通过以下命令查看所有的alias(别名): git config --get-regexp alias 这个命令会列出所有配置的alias,例如: alias.st.status alias.co.checkout alias.br.branch ... 如果您想查看某个特定a…...
React + TypeScript 全栈开发最佳实践
React TypeScript 全栈开发最佳实践 一、环境搭建与项目初始化 node.js和npm的安装请参考我的文章。 1.1 脚手架选择与工程创建 # 使用Vite 5.x创建ReactTS项目(2025年主流方案) npx create-vitelatest my-app --template react-ts cd my-app npm in…...

springboot志同道合交友网站设计与实现(代码+数据库+LW)
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本志同道合交友网站就是在这样的大环境下诞生,其可以帮助使用者在短时间内处理完毕庞大的数据信…...

防火墙双机热备---VRRP,VGMP,HRP(超详细)
双机热备技术-----VRRP,VGMP,HRP三个组成 注:与路由器VRRP有所不同,路由器是通过控制开销值控制数据包流通方向 防火墙双机热备: 1.主备备份模式 双机热备最大的特点就是防火墙提供了一条专门的备份通道(心…...

MQTT实现智能家居------4、在Linux上运行MQTT
进入主目录,创建一个MQTT文件夹 cd ~ mkdir MQTT 用FileZilla连接开发板,将我发布的压缩包解压以后放进MQTT 安装cmake sudo apt-get install cmake g编译 & 运行 echo sudo apt-get update >> build.sh #向build.sh文件写入内容 chmod…...

VMware建立linux虚拟机
本文适用于初学者,帮助初学者学习如何创建虚拟机,了解在创建过程中各个选项的含义。 环境如下: CentOS版本: CentOS 7.9(2009) 软件: VMware Workstation 17 Pro 17.5.0 build-22583795 1.配…...

大模型文集开篇稿
2023年,我国AI大模型行业规模已达到147亿元人民币(前瞻产业研究院 数据)。AI大模型的行业应用及技术进步能有效提升各行业生产要素的产出效率并提高了数据要素在生产要素组合中的地位。供给方面,当前AI大模型企业主要通过深化通用…...
python pickle模块
pickle 是 Python 的一个标准模块,它实现了基本的二进制协议,用于对象的序列化和反序列化。序列化是指将对象转换为字节流的过程,这样对象就可以被保存到文件中或通过网络传输。反序列化是指将字节流转换回对象的过程。 使用 pickle 序列化对…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

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

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...