Redis 核心知识梳理:主从复制、集群搭建与数据类型详解(二)

redis核心技术梳理(持续更新) redis常用命令 get/set/exists/del/keys/rename/dbsize/type/mget/mset/expire/setnx/incr/decr/append/flushall redis的数据类型 String/Hash/List/Set/Zset/Hyperloglog/Geo/Stream/BitMaps redis事务 redis的单个命令是原子性的(比如get/set/mget/mset),要么成功要么失败,不存在并发干扰的问题。如果涉及到多个命令的. 阅读详情

一、Redis 主从复制(Replication)

1. 复制流程

主从复制的核心流程分为三步:

  1. 从节点发起同步请求:从节点向主节点发送 SYNC命令,请求数据同步。

  2. 主节点生成并发送 RDB 文件:主节点收到 SYNC后,执行 BGSAVE生成 RDB 快照文件,并发送给从节点;同时缓存此期间的新写命令。

  3. 主节点发送增量命令:RDB 传输完成后,主节点将缓存的增量写命令发送给从节点,之后持续同步新命令,保持数据一致。

2. 配置步骤

  • 主节点:无需额外配置(默认开启主节点模式)。

  • 从节点:在从节点的 redis.conf中配置,或通过命令行临时设置:

    slaveof <master_ip> <master_port>

    例如:slaveof 192.168.61.131 6379。

3. 功能测试

  • 数据同步验证:向主节点写入数据(如 SET test_key 123),观察从节点是否能通过 GET test_key获取到相同数据。

  • 故障场景验证:关闭主节点(SHUTDOWN),此时从节点会进入只读模式,无法写入数据(文档中提到“主死了从只能读”,这是 Redis 主从复制的默认行为——从节点默认 slave-read-only yes)。


二、Redis 集群(Cluster)

1. 核心机制解析

(1)节点间为何相互 Ping-Pong?

Redis 集群采用 Gossip 协议,节点之间通过定期发送 PING(心跳检测)和接收 PONG(响应)消息,交换节点状态(在线/离线、槽位分配等),实现集群状态的分布式感知。

(2)为何需要检测故障节点?

Redis 集群采用 去中心化架构,但依赖“多数派投票”机制判断节点故障。若某个主节点宕机且未及时检测,其负责的槽位将无法访问,导致集群整体不可用(文档中“集群中有一个节点挂了整个群都挂了”的描述需注意:实际是“负责槽位的主节点宕机且无可用的从节点升级”时才会不可用)。

(3)客户端为何能连接任意节点?

Redis 集群将所有数据划分为 16384 个哈希槽(Slot),每个主节点负责一部分槽位。客户端存取数据时,通过 CRC16(key) % 16384计算 key 对应的槽位,再根据槽位与节点的映射关系,自动重定向到正确的节点(即使客户端连接非目标节点,也会返回 MOVED重定向指令)。

(4)集群最少需要多少节点?
  • 投票容错:判断节点故障需超过半数节点同意,因此至少需要 3 个主节点(3 个节点投票时,2 票即可超过半数)。

  • 高可用要求:为保证故障时从节点能升级为主节点,通常每个主节点至少配 1 个从节点,因此最小高可用集群为 3 主 3 从(共 6 个节点)。

2. 集群搭建步骤(以 6 节点为例)

(1)准备环境
  • 删除原 Redis 实例的持久化文件(避免旧数据干扰):

    cd /usr/local/redis/bin
    rm -f dump.rdb appendonly.aof
(2)开启集群模式

修改每个节点的 redis.conf:

cluster-enabled yes  # 开启集群模式
cluster-config-file nodes-7001.conf  # 集群配置文件(自动生成)
cluster-node-timeout 15000  # 节点超时时间(毫秒)
(3)创建 6 个节点目录
cd /usr/local
cp -r redis redis-cluster/redis-7001
cp -r redis redis-cluster/redis-7002
# 同理复制 7003~7006
(4)修改各节点端口

分别编辑每个节点的 redis.conf,设置不同端口:

port 7001  # 7002~7006 依次修改
(5)编写启动脚本

创建 start-all.sh批量启动节点:

cd /usr/local/redis-cluster
vim start-all.sh
# 内容如下:
cd redis-7001/bin && ./redis-server redis.conf
cd ../redis-7002/bin && ./redis-server redis.conf
# 同理添加 7003~7006
chmod 755 start-all.sh
./start-all.sh
ps -ef | grep redis  # 验证进程
(6)安装 Ruby 环境(旧版 Redis 依赖)

Redis 3.x 集群搭建需通过 Ruby 脚本 redis-trib.rb,需安装 Ruby 及依赖:

yum install ruby rubygems
gem install redis-3.0.0.gem  # 需提前下载对应版本的 redis.gem
(7)执行集群创建脚本

使用 redis-trib.rb初始化集群(--replicas 1表示每个主节点配 1 个从节点):

cd /usr/upload/redis-3.0.0/src
./redis-trib.rb create --replicas 1 \
192.168.61.131:7001 192.168.61.131:7002 192.168.61.131:7003 \
192.168.61.131:7004 192.168.61.131:7005 192.168.61.131:7006
(8)集群测试
  • 数据存取:使用 -c参数开启集群模式连接:

    ./redis-cli -c -p 7001
    SET test_key "hello cluster"  # 自动重定向到对应槽位节点
    GET test_key
  • 高可用验证:查看集群节点状态:

    cluster nodes  # 显示所有节点角色(master/slave)、槽位、状态

    关闭主节点(如 7001)后,再次执行 cluster nodes,可观察到从节点(如 7004)升级为新主节点。


三、Redis 五种数据类型及常用命令

数据类型

赋值命令

取值命令

删除命令

核心特点

String

SET key value

GET key

DEL key

二进制安全,最大 512MB

Hash

HSET key field value

HGET key field

HDEL key field

键值对集合,适合存储对象

List

LPUSH/RPUSH key v1 v2

LRANGE key 0 -1(全量)

LREM key count v

双向链表,支持头尾操作

Set

SADD key v1 v2

SMEMBERS key(无序)

SREM key v

无序不重复集合,支持交集并集

ZSet

ZADD key score v

ZRANGE key 0 -1 WITHSCORES

ZREM key v

有序集合(按 score 排序)


四、注意事项(文档补充与修正)

  1. 主从复制的“从节点只读”:Redis 2.6+ 版本默认 slave-read-only yes,可通过配置关闭,但不建议(避免数据不一致)。

  2. 集群故障容错:文档中“集群中有一个节点挂了整个群都挂了”不准确,实际是“负责槽位的主节点宕机且无从节点升级”时才会不可用;若主节点有从节点,从节点会自动晋升。

  3. Ruby 脚本的替代方案:Redis 5.0+ 已内置 redis-cli --cluster命令,无需依赖 Ruby,例如:

    redis-cli --cluster create 192.168.61.131:7001 ... --cluster-replicas 1

Redis面试核心知识点与实战应用解析 Redis作为高性能键值数据库,其核心优势在于内存操作与高效数据结构设计。理解SDS、跳跃表等底层实现原理,能帮助开发者掌握Redis为何能达到微秒级响应。在分布式系统中,Redis常用于缓存、消息队列等场景,其持久化机制(RDB/AOF)和集群方案(哨兵/Cluster)是保障数据可靠性的关键技术。针对缓存雪崩、穿透等典型问题,合理使用布隆过滤器、多级缓存等方案能显著提升系统稳定性。通过Lua脚本实现原子操作、利用Stream构建可靠消息系统等实战技巧,都是Redis在互联网高并发场景中的最佳实践。 阅读详情

相关推荐

微信小程序一键登录和临时code用JWT进行微信用户授权

2、跨域进行调用接口时候,唯一标识UnionID和会话密钥 session_key如果还是用的我自己的,会出现无法调用微信服务器接口,就需要将唯一标识和会话密钥换成前端的,才可以,我自己认为这样很不合理,暂时还没有找到原因。2、能够获取到openId,但是也只能获取到openid,无法获取用户的相关信息,经过查阅官网发现,现在微信那边已经将用户信息加密,需要调用提供的接口进行解密然后获取用户数据,问题原因已经找到解决方法,还未即使更改。1、我这是一台电脑实现的前端调用后端接口,不用考虑跨域的问题。

qq_67653492的博客 5712

Redis 核心知识体系梳理

基于内存:数据主要存储在内存中,读写速度极快(毫秒级响应)。多数据结构:支持 String、Hash、List、Set、Sorted Set 等,满足复杂业务需求。持久化:通过 RDB 和 AOF 机制将内存数据写入磁盘,避免数据丢失。高并发:单线程模型(核心逻辑)+ I/O 多路复用,支持数万 QPS。原子操作:所有命令原子性,支持事务和 Lua 脚本保证复杂操作的原子性。分布式支持:主从复制、哨兵、集群,实现高可用和横向扩展。应用场景。

weixin_43946418的博客 1027

STM32F103C8T6全桥逆变电路PWM波生成(基于HAL库)

全桥逆变电路需要两组开关管相互协同工作,故需要两路PWM控制信号,为了防止电源短路,需要保证同一桥臂的上下两个开关管不会同时导通,故两路PWM在相位上需要相差180°;为了保证高频变压器不会磁饱和,使正负半周PWM占空比相同。但是传统的互补输出达不到调节占空比调节输出电压的效果。......

weixin_45042735的博客 6021

Redis核心知识点梳理

Redis完整学习链路:1 基础层:内存存储+多样数据结构,解决缓存、各类业务场景2 功能层:发布订阅、事务、RDB/AOF持久化,保障数据可靠3 高可用层:主从复制→哨兵自动故障切换→集群分片扩容4 分布式问题层:缓存穿透/击穿/雪崩、分布式锁,应对线上并发难题学习核心思路:每一个功能都是为解决真实线上痛点而生,不要孤立背命令,结合业务场景记忆效率更高。

2601_96680840的博客 501

网络系统管理专栏-配套练习+知识点详解

网络系统管理专栏-配套练习+知识点详解

bfq05234214的博客 681

一步步带你用C#开发Modbus通信上位机(附完整代码与工程思路)

Modbus上位机开发指南(C#实现) 本文详细介绍使用C#开发Modbus上位机系统的全过程,覆盖RTU和TCP两种协议。内容包含:1)需求分析与技术选型(WinForms+NModbus4);2)分层架构设计(UI/业务/通信层);3)通信层核心代码实现(串口/以太网连接、数据读写);4)功能模块开发(设备管理、数据采集、远程控制)。提供可直接复用的Modbus RTU客户端代码示例,包含连接管理、线圈读写、寄存器操作等工业场景必备功能。通过系统化的开发流程,帮助开发者快速构建稳定可靠的Modbus监控

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 819

Redis 三种集群模式

Master 主节点:唯一可写入节点,负责接收写请求、生成数据变更日志(repl_backlog),并同步数据到从节点。Replica 从节点:只读节点,通过replicaof配置指定主节点,从主节点同步数据,分担读请求(如查询、统计)。哨兵节点(Sentinel):特殊的 Redis 节点(不存储数据),负责监控主从节点、发起故障转移、通知客户端新主节点地址。数据节点:即原主从复制中的 Master 和 Replica 节点,负责存储数据。测试/小规模场景。

m0_46589218的博客 1213

搞定ESD(二):ESD干扰机理分析

大家好,我是记得诚。上文介绍了ESD的基本知识,对ESD的测试标准进行了解析,包括静电发生器的介绍,实验布置要求,静电放电实验的实施及判定等内容。本文主要介绍ESD的干扰机理。

记得诚 4295

Redis核心知识点全解析:从基础到高可用与性能优化

作为当前最流行的高性能键值数据库,Redis凭借其高速读写、丰富的数据结构及灵活的扩展能力,广泛应用于缓存、分布式锁、消息队列、计数器等场景。然而,要充分发挥Redis的价值,需深入掌握其基础用法、持久化机制、高可用方案及性能优化技巧。本文将系统梳理Redis的核心知识点,从基础命令到分布式集群原理,助力开发者与运维人员构建稳定、高效的Redis服务。

专注Java和MySQL领域知识分享 1019

(11-3-01 )

以太坊(Ethereum)是一种基于区块链技术的开源平台和加密货币。它于2015年由Vitalik Buterin和Gavin Wood等开发者创建,并成为比特币之后最受欢迎的加密货币之一。以太坊不仅支持加密货币交易,还为开发者和企业提供了构建去中心化应用程序的强大工具。在本节的内容中,将实型一个完整的机器学习模型项目,智能检测出以太坊区块链中的非法账户。从问题定义到模型建立和评估,再到最终的总结和建议。本实例突出了处理类别不平衡问题的重要性,并展示了如何使用多种机器学习算法来解决实际问题。此外,通过数据可

码农三叔 2169

FP16、BF16、INT8、INT4精度模型加载所需显存以及硬件适配的分析

本文主要介绍了FP16、INT8、INT4精度模型加载占用显存大小的分析,希望对学习大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 模型加载显存占用大小 3. 不同精度是否与硬件适配

herosunly的博客 23万+

Redis 面试核心知识点总结,一文读懂 Redis!

不同的数据类型适用于不同的应用场景,如 String 常用于存储简单的键值对,List 适用于实现队列和栈,Hash 适合存储对象等。这种方式主要用于解决在更新数据库后,缓存中的旧数据可能导致的数据不一致问题。通过数据分片将数据存储在不同的节点上,节点间通过 Gossip 协议进行通信和数据同步,实现了集群的水平扩展和高可用性。Redis 事务是一组命令的集合,它可以保证这组命令在执行过程中不会被其他客户端的命令打断,即这些命令要么全部执行,要么全部不执行。(本文大部分内容也总结于这篇文章)

2403_85207115的博客 1270

基于单片机的按键加1数码管显示(仿真+程序)5046

1、51+Proteus8.10;2、学习计数统计、数码管显示驱动;

理论结合实践,开启你的电子学习新方案! 1324

面试必备:Redis 核心知识点清单

本篇文章也是对作者内容的总结与梳理,我把作者提到的核心问题整理出来,然后做个列表,后续可以带着问题去复习,这样学习效率会更高。

GengPengShuaiGPS的博客 264

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Redis 知识体系全面梳理

Redis(Remote Dictionary Server)是一款开源的高性能内存数据结构存储系统,广泛用作缓存、消息队列、会话存储和实时分析引擎。其核心优势在于极致的读写性能、丰富的数据类型支持以及灵活的高可用与扩展架构。本指南基于对核心知识点的系统梳理,全面覆盖从基础原理到高级运维的完整技术体系。为帮助读者快速建立认知框架,本文将Redis知识体系划分为与:涵盖数据类型、编码实现与对象系统。:包括单线程模型、持久化策略与内存管理。:涉及主从复制、哨兵机制与集群方案。

m0_68450099的博客 386

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Redis Cluster (Redis 集群模式)从入门到精通:架构解析、机制详解与运维排查

Redis Cluster是Redis官方提供的分布式解决方案,通过哈希槽分片实现水平扩展,结合主从复制和自动故障转移保障高可用。核心架构包含3个主节点和3个从节点,采用无中心化设计,节点间通过Gossip协议通信。关键机制包括哈希槽分片(16384个槽位)、主从复制、故障自动转移(基于投票机制)等。集群通过CRC16算法计算键的槽位,客户端根据MOVED指令重定向请求。这种设计支持动态扩缩容,仅需迁移对应槽位数据,不影响整体服务。

2201_75355172的博客 1629

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数据库-Redis:常用语法 / Redis 核心知识技能梳理

Redis核心知识技能全解析 Redis作为高性能键值数据库,其核心知识体系包含数据结构、持久化机制、高可用方案等关键内容。文章系统梳理了Redis的五大核心数据结构(String/Hash/List/Set/ZSet)及其底层实现原理,对比分析了RDB和AOF两种持久化方式的优缺点,并推荐生产环境使用混合持久化方案。在高可用方面,详细解读了主从复制、哨兵模式和Redis Cluster三种方案的适用场景与技术特点。针对缓存三大问题(穿透/击穿/雪崩)提出了布隆过滤器、互斥锁等多维度解决方案,并深入剖析了分

snow的博客 383

Redis集群架构详解:从单机到分布式的扩展之路

单机Redis:简单高效,但面临容量和可用性限制主从复制:通过读写分离提升性能和可靠性Sentinel哨兵:解决主从架构下的高可用问题Cluster集群:通过数据分片实现水平扩展每个阶段都是对前一阶段限制的突破,形成了一条清晰的演进路径。根据业务规模和需求,选择合适的架构阶段至关重要。

sinat_27016095的博客 737

Redis分片集群:原理与优化

在当今大数据时代,随着数据量的急剧增长,如何高效地存储和访问海量数据成为了一个亟待解决的问题。Redis作为一款高性能的内存数据库,在处理大量数据时,其性能瓶颈逐渐显现。为了解决这一问题,Redis引入了分片集群的概念,通过将数据分散存储在多个节点上,实现了数据的水平扩展。本文将围绕Redis知识点之分片集群:概述展开,深入探讨分片集群的概念、优势以及面临的挑战。在传统的Redis单机部署中,当数据量达到一定程度时,单机性能会逐渐下降,甚至出现内存溢出等问题。

我是Java程序员廖志伟,感谢朋友们的支持! 921

从单机到集群:Redis 高可用演进之路(深度解析主从、哨兵、Twemproxy、Codis 与 Redis Cluster)

Redis集群架构演进:从单机到分布式解决方案 摘要:本文系统梳理了Redis集群架构的技术演进历程。从最初的单机模式,到主从复制解决数据冗余,再到哨兵模式实现自动故障转移,直至Redis Cluster官方集群方案。文章深入剖析了每种方案的设计思想与技术权衡,包括主从模式的手动运维缺陷、哨兵模式的分布式共识机制、社区方案(客户端分片、Twemproxy、Codis)的创新与局限,以及Redis Cluster的去中心化P2P架构和哈希槽机制。通过对比分析不同方案的适用场景,为分布式系统选型提供了实践指导,

GQ_666的博客 1049

Redis: 特色,业务场景举例,底层原理,持续进阶等问题梳理

Redis 是目前使用非常广泛的中间件,在于它功能强大,持续改进,经久不衰 - 主要体现在以下几点 * 1 ) **高性能**: Redis 的底层是C语言编写的,它的定位是内存型数据库 * 而且 Redis 的作者对操作系统也非常的精通 * 它通讯方式采用了epoll 非阻塞 / IO多路复用的机制,提高了访问性 * 2 ) **线程安全**:Redis的操作都是单线程的, 保证了原子操作 * 注意,最新版本都到版本8了,这都多线程的,怎么还单线程呢

Wang的专栏 1920

Redis知识点总结及应用场景梳理

Redis的核心优势是“高性能、多数据结构、可持久化、高可用”,其应用场景围绕这些优势展开,从最基础的缓存,到计数器、会话存储、消息队列、排行榜等,几乎覆盖互联网业务的方方面面。对于开发者而言,掌握Redis的核心知识点(数据结构、持久化、高可用、缓存问题),结合业务场景合理选型,才能充分发挥Redis的价值,提升系统性能和并发能力。后续将持续更新Redis进阶知识点(如Redis Cluster部署、Lua脚本、内存优化),欢迎关注交流~一、Redis核心基础知识点1.1 核心特性。

G13138200303的博客 407

Redis 核心业务流程

Redis 启动加载完整核心流程(所有流程的统一入口)Redis 单线程命令执行核心流程(高性能底层根源,所有请求通用)Redis 过期Key清理核心流程(定期删除+惰性删除)Redis 内存淘汰机制执行流程(内存超限兜底)Redis RDB持久化完整核心流程Redis AOF持久化+AOF重写完整核心流程Redis 主从复制完整核心流程(含断点续传)Redis 哨兵模式故障转移完整核心流程Redis Cluster 哈希槽分配+数据迁移核心流程。

xiaolyuh的专栏 829

Redis 高可用:从主从复制到集群架构的演进之路

本文系统介绍了Redis高可用架构的演进历程,从单机Redis的局限性出发,逐步解析主从复制、哨兵模式和集群架构三种解决方案。主从复制实现数据冗余和读写分离,哨兵模式提供自动故障转移能力,而集群架构通过分片技术实现真正的水平扩展。文章详细阐述了每种方案的实现原理、配置方法和优缺点,并提供了关键命令和配置示例,帮助开发者理解Redis高可用的核心技术。通过这一演进路线,Redis最终实现了高性能、高可用和可扩展性的统一。

qq_53790682的博客 210

Redis集群缩容:原理与策略

在分布式系统中,Redis集群作为高性能、持久化的数据存储解决方案,其稳定性和可扩展性至关重要。然而,在实际应用中,随着业务的发展,集群规模可能需要调整,这就涉及到集群的缩容操作。本文将围绕Redis知识点之集群缩容进行总结与展望。在分布式系统中,集群缩容是一个常见的需求。例如,当某个节点负载过高,或者需要淘汰老旧的硬件设备时,就需要对Redis集群进行缩容。如果不进行合理的缩容操作,可能会导致数据丢失、集群不稳定等问题。数据安全:缩容过程中,确保数据的一致性和完整性是首要任务。

我是Java程序员廖志伟,感谢朋友们的支持!不定期贡献一篇高品质、过万文字、图文并茂且附有视频解说、满载代码示例注释的良心之作,坚决杜绝粗制乱造。 766
上一篇: Redis 从入门到实战:高并发场景下的缓存利器(一)
下一篇: Spring Data Redis 详解
StackNoOverflow
博客等级 码龄1年 22粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值