Redis主从架构配置 读写分离

【Redis系列】深入浅出Redis主从复制之读写分离【一篇搞懂Redis复制】 Redis默认采用异步复制的持久化方案(RDB),具备低延迟、高性能的特点。这是大多数Redis的自然复制模式。 主从复制(master-replica)-读写分离这是基于RDB持久化方案的全量数据复制模式。 1.主从复制-读写分离原理 为了解决高并发场景下Redis的性能问题,需要对单例Redis进行横向扩展;我们都知道在缓存中读的并发量要远远大于写的并发量。所以就产生了一种读写分离的方法: 将读和写分开,master节点可以进行读写操作,而slave节点只能进行读操作(conf文件可以修改),因此读. 阅读详情

在 Spring Boot 中实现 Redis 读请求的分摊负载(将读操作分散到多个从节点),需要通过 Redis客户端配置 和 读写分离策略 来实现。以下是具体实现步骤与配置示例:


1. 基础环境准备

确保 Redis 主从架构已正确部署
  • 主节点:127.0.0.1:6379
  • 从节点:127.0.0.1:6380, 127.0.0.1:6381
项目依赖
<!-- pom.xml -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>io.lettuce</groupId>
    <artifactId>lettuce-core</artifactId> <!-- 推荐使用Lettuce客户端 -->
</dependency>

2. 核心配置:Lettuce客户端实现读写分离(配置好无需关心什么是读什么是写,和之前写法一样,Lettuce客户端会帮你实现的)

2.1 配置主从节点信息
# application.yml
spring:
  redis:
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 2
    # 配置所有节点(主+从)  
    cluster:
      nodes:
        - 127.0.0.1:6379
        - 127.0.0.1:6380
        - 127.0.0.1:6381
    # 启用读写分离模式(关键配置!)
    read-from: REPLICA_PREFERRED
配置项说明:
  • read-from: 定义读请求的路由策略
    • REPLICA_PREFERRED (推荐):优先从节点读取,主节点仅作备用
    • REPLICA:强制从从节点读取(主节点不参与读)
    • MASTER:强制从主节点读取(默认)

2.2 Redis 服务端建立主从
主节点 (6379)从节点1 (6380)从节点2 (6381)发送PSYNC命令请求同步返回RDB快照+复制流发送PSYNC命令请求同步返回RDB快照+复制流主节点 (6379)从节点1 (6380)从节点2 (6381)
2.3客户端识别主从
Lettuce客户端任意Redis节点(如6380)MasterSlave1Slave2连接初始节点(配置列表中任意一个)返回INFO replication信息根据INFO识别主节点地址记录从节点信息记录从节点信息Lettuce客户端任意Redis节点(如6380)MasterSlave1Slave2

3. 验证读写分离效果

3.1 注入 RedisTemplate
@Service
public class RedisService {
    private final RedisTemplate<String, String> redisTemplate;

    @Autowired
    public RedisService(RedisTemplate<String, String> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }
}
3.2 执行读写测试
@SpringBootTest
public class RedisReadWriteTest {

    @Autowired
    private RedisService redisService;

    @Test
    void testReadDistribution() {
        // 写操作(自动路由到主节点)
        redisService.redisTemplate.opsForValue().set("stress_test", "data");

        // 循环读操作(应分散到多个从节点)
        for (int i = 0; i < 100; i++) {
            String value = redisService.redisTemplate.opsForValue().get("stress_test");
            System.out.println("Read value: " + value);
        }
    }
}

4. 高级配置:自定义负载均衡策略

如果需要更精细的流量控制,可自定义 ReadFrom 策略:

4.1 创建自定义路由策略
import io.lettuce.core.ReadFrom;

@Configuration
public class RedisConfig {

    @Bean
    public LettuceClientConfigurationBuilderCustomizer customReadFrom() {
        return clientConfigurationBuilder -> 
            clientConfigurationBuilder.readFrom(
                ReadFrom.REPLICA_PREFERRED // 可替换为自定义策略
            );
    }
}
4.2 支持动态权重分配(示例)
// 自定义权重路由(需继承AbstractRedisClientConfiguration)
public class WeightedReadFromStrategy extends ReadFrom {

    @Override
    public List<RedisNodeDescription> select(Nodes nodes) {
        List<RedisNodeDescription> replicas = nodes.getNodes().stream()
                .filter(node -> node.getRole() == RedisInstance.Role.SLAVE)
                .collect(Collectors.toList());

        // 实现自定义权重算法(示例:70%流量到第一个从节点)
        return Collections.singletonList(replicas.get(0));
    }
}

5. 监控与验证手段

5.1 查看客户端连接分布
# 登录Redis从节点查看客户端连接数
redis-cli -p 6380 info clients | grep connected_clients
redis-cli -p 6381 info clients | grep connected_clients
5.2 使用Redis监控命令
# 查看主节点接收的请求类型
redis-cli -p 6379 info stats | grep -E "total_commands_processed|total_reads_processed|total_writes_processed"
5.3 Spring Boot Actuator 集成
# application.yml
management:
  endpoints:
    web:
      exposure:
        include: "redis"

访问 http://localhost:8080/actuator/redis 查看连接池状态。


6. 生产环境最佳实践

6.1 安全增强配置
spring:
  redis:
    password: your_redis_password
    ssl: true  # 启用TLS加密(Redis 6.0+)
6.2 故障转移处理
// 配置 Sentinel 实现自动故障转移
spring:
  redis:
    sentinel:
      master: mymaster
      nodes: 127.0.0.1:26379,127.0.0.1:26380
6.3 性能优化参数
spring:
  redis:
    lettuce:
      shutdown-timeout: 200ms
      pool:
        max-wait: 50ms
        time-between-eviction-runs: 60s

关键配置总结

配置项作用说明推荐值
spring.redis.read-from定义读请求路由策略REPLICA_PREFERRED
lettuce.pool.max-active控制最大连接数避免过载根据业务压力调整(建议8-16)
ReadFrom.REPLICA强制从从节点读取适用于纯读场景
ReadFrom.MASTER强制从主节点读取(默认)需要强一致性时使用

通过上述配置,Spring Boot 应用会自动将写操作定向到主节点,读操作根据策略分配到多个从节点。实际生产环境中,建议结合负载均衡器(如Nginx)或服务网格(如Istio) 实现更细粒度的流量控制。

Redis配置主从架构,实现读写分离 Redis的主从架构,能帮助我们实现读多,写少的情况,下面配置Redis架构,很简单。准备环境 vmware + rhel-server-7.0(101,102,103)+redis-3.2.01、在192.168.137.101安装好redis3.2.0,我安装的目录如下redis的安装参考http://blog.youkuaiyun.com/yingxiake/article/details/5146936 阅读详情

相关推荐

4D Gaussian Splatting for Real-Time Dynamic Scene Rendering-4DGS阅读笔记

为了实现实时动态场景渲染,同时还能具备较高的训练和存储效率,作者提出了四维高斯溅射(4D-GS)方法,将其作为动态场景的一种整体表示方式,而不是对每个单独的帧应用三维高斯溅射(3D-GS)方法。在 4D-GS 中,提出了一种新颖的显式表示方法,它同时包含三维高斯模型和四维神经体素。受 HexPlane 启发,提出了一种分解的神经体素编码算法,以高效地从四维神经体素构建高斯特征,然后应用一个轻量级多层感知器(MLP)来预测在新时间戳下的高斯变形。

2403_85515624的博客 2343

springboot配置redis主从+sentinel(哨兵)+cluster(集群)

通过查看redis配置源码,我们发现redis加载配置的顺序为: 哨兵 -> 集群-> 单机。

weixin_42223524的博客 2613

智能气象站:ESP32驱动的心知天气数据可视化实践

本文详细介绍了基于ESP32微控制器和心知天气API构建智能气象站的完整实践。通过Arduino开发环境,实现天气数据的获取、JSON解析与OLED屏可视化展示,涵盖硬件连接、API配置、低功耗优化及部署问题排查,为物联网开发者提供实用指南。

jump7的博客 210

Redis主从搭建(哨兵模式),springboot整合redis主从

通过一系列验证,你或许会发现Redis哨兵重新选举主节点后会将这个被选中的节点的redis.conf修改掉,具体的为删掉replicaof 配置项,而原来的主节点则添加replicaof 配置项,并指向新的主节点。虽然redis主从已经搭建完毕,但是当主节点宕机时,从节点并不会接手主节点的工作,只会傻傻得在那里不停地尝试连接主节点。然而这并不是我们想要的,我们希望主节点挂了后,从节点可以顶上去,让服务继续使用。还可以通过sentinel.log日志文件的日志信息查看哨兵的相关配置情况!

Ye_GuoLin的博客 2953

ndnSIM学习笔记(一)

在接下来的一段时间要用ndnSIM来做自己的仿真网络,需要系统的学习相关内容,以下为内容记录。1.安装      1.1核心依赖(必需的)             • python &gt;= 2.6             • libsqlite3             • libcrypto++             • pkg-config             • Boost lib...

gaonjzzz的博客 2985

Android系统编译之Communication error with Jack server (35), try ‘jack-diagnose‘ or see Jack server log

jack server failed场景个人分析网上分析分析1分析2原因1:权限问题原因2:端口占用原因3:删除 TLSv1, TLSv1.1测试结论解决方案说明相关链接 场景 在进行Android系统开发时,在liunx编译时发生问题,描述如下: ninja: build stopped: subcommand failed. build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed make: *** [ninja_wrapper

weixin_43194854的博客 2401

Redis主从复制、哨兵模式、集群模式的搭建与springboot集成

Redis 主从复制、哨兵模式的搭建与springboot集成

qq_38055805的博客 5839

[Dify 案例实战] 构建一个基于 Dify 的个人写作助理工具-带绑定资源

想要一个懂你风格、能帮你写文章、润色文字、生成大纲的 AI 写作助手? 本文将带你从 0 到 1,完整实现一个 基于 Dify 工作流的个人写作助理工具。 我们会利用 Dify 的 LLM 节点、变量传递、文本处理、知识库与多轮对话能力.

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 274

搭建redis主从,哨兵配置,集成到springboot中配置读写分离

文章介绍Ubuntu系统搭建redis,并完成主从的读写分离配置,为主节点搭建三台哨兵服务,并集成到springboot中。

qq_50867577的博客 3495

【小白深度教程 1.3】使用 BP-Net 深度补全网络,进行 KITTI 稠密点云和图像融合(Depth Completion 实战)

在上一节中,我们展示了如何将从激光雷达获取的稀疏点云(深度)映射到图像。因此这篇论文我们尝试使用 Depth Completion(深度补全)技术,来将稀释的点云深度,补全为稠密深度。

2401_87064292的博客 1198

物理信息神经网络(PINN)文献综述 —— 原理、严格推导与优化训练策略

本章系统阐述物理信息神经网络的理论基础、主要算法改进与训练策略。内容涵盖:PINN 的数学表述与残差构造;损失与梯度的逐步推导;训练困难(梯度消失/爆炸、损失幅度不平衡、频谱偏差、采样效率低等)的定量分析;四类核心解决方案(动态损失加权、梯度归一化与预条件化、自适应采样、分阶段/分域训练)的详细推导与实现要点;以及若干关键算法的伪代码与收敛性形式结论。所有涉及推导的步骤均按顺序展开,给出必要的数学依据与结论性陈述,可直接作为教学或参考章节使用。

u012133341的博客 422

【Redis】主从复制原理与配置——主从同步机制、读写分离、搭建主从架构

Redis主从复制机制详解:本文全面介绍了Redis主从复制的原理与实战配置。主要内容包括:主从复制的基本概念(主节点负责写,从节点负责读),同步机制流程(全量同步和增量同步),搭建主从架构的具体步骤,以及读写分离的实现方式。文章还提供了常见问题解决方案和10个精选面试题,帮助读者深入理解主从复制的核心原理和应用场景。通过本文,读者可以掌握Redis主从复制的配置技巧和性能优化方法,提升分布式系统的数据安全性和读写性能。

silverclayz的技术分享 982

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++初中组:带解析)(7月4日试卷一)【文末附答案和解析】

2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++初中组:带解析)(7月4日试卷一)【文末附答案和解析】

王老师青少年编程 1736

Redis配置主从架构,实现读写分离{{1025}}

Redis的主从架构,能帮助我们实现读多,写少的情况,下面配置Redis架构,很简单。准备环境 vmware + rhel-server-7.0(101,102,103)+redis-3.2.01、在192.168.137.101安装好redis3.2.0,我安装的目录如下redis的安装参考http://blog.youkuaiyun.com/yingxiake/article/details/514693...

十年呵护的专栏 455

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

怎么配置一个读写分离的redis-replication主从架构?

1、主节点修改配置文件 1.1、设置口令认证 1.2、绑定主节点的ip 2、从节点修改配置文件 2.1、从节点配置主节点的IP和端口号 2.2、从节点配置成只读,这个配置不用改默认就是只读 2.3、主节点开启了认证口令,从节点要配置主节点的口令 2.4、从节点绑定自己的IP 3、主节点进入命令行 命令 [root@emooco init.d]# redis-cli -h 172.16.198.135 图解 4、主节点添加数据 命令 172.16.198.135:6379> set k4

Coding Earth Engine 439

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

redis进阶:redis主从架构原理及搭建

至此,我们的主从架构就搭建完成了,实际上我们只需要一个replicaof 主节点IP 端口就能实现主从同步,非常简单。需要注意的是,实际操作过程中注意开启对应的redis端口或者关闭防火墙(生产环境不建议关闭)下期继续带大家实操redis哨兵模式。

55555的博客 2259

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Redis 主从架构-从节点配置

主从架构:一主一从(多从),往主节点去写数据,再从节点去读数据-可以读到;主从架构就搭建成功了; 1、启用复制,部署slave node 从节点下载安装配置 wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz tar -xzvf tcl8.6.1-src.tar.gz cd /usr/local/tcl8.6.1/unix/ ./configure make && make install 使用redis-..

心要是孤单了,到了那里都是流浪~~~ 1733

REDIS如何通过读写分离来承载读写分离来承载请求的QPS超过10万+【redis replication的核心机制】+redis主从架构的核心原理

1. redis如何通过读写分离来承载读请求的QPS超过10万+ · 图文理解?学习更爽?理解更快? · 将redis缓存架构做成一主多从,主分支master node主要负责写入数据,并且将数据同步复制到其他的slave node分支节点,其余的从分支主要负责读取请求,所有的读取数据的请求全部走从节点,也就是slave node节点 【如图:redis单机支持每秒10万+QPS基本原理】 从上面的图中就可以分析出来,master node主节点主要负责的是写请求,slave node分支主要负责读请

weixin_46950473的博客 3007

大数据开发:Redis主从架构搭建

之前我们陆续对Redis入门(大数据开发:Redis入门简介),Redis集群环境搭建(大数据开发:Redis集群环境搭建流程详解)都做了介绍,今天的大数据开发学习分享,我们来接着讲,Redis主从架构的搭建。 本次示例,准备搭建的是主从架构( Master/Slave )中的一主两从模式;其中 Master 为 Redis 的主服务器,主要负责写操作,两个 Slave 为 Redis 的从服务器,主要负责读操作,该架构最终可以实现主从复制和读写分离,架构图如下: 搭建步骤 这里采用在..

shuimuzh123的博客 281

Redis主从架构、哨兵集群原理实战

背景目标Redis主从架构介绍。

2302_76363587的博客 1383

Linux搭建redis一主一从配置,【Redis主从架构】搭建一个一主一从的Redis主从架构...

1. 学习目标搭建一个一主一从的Redis主从架构。主节点去写,从节点去读,如果在主节点写入数据之后,从节点能读取到,就说明搭建成功了。2. 搭建 redis slave node2.1 安装tcl#1. 下载tcl安装包wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz#2. 解压tcl8.6.1-src.tar.gztar...

weixin_34546240的博客 297

(十一)高并发redis学习笔记:部署高可用的redis主从架构

文章目录1、如何搭建主从架构1.1 java环境安装1.2 redis环境安装1.3 相关配置测试细节1.3.1 强制读写分离1.3.2 集群安全认证1.3.3 读写分离架构的测试 1、如何搭建主从架构 我们知道了主从复制的原理之后,关键是怎么搭建呢???我想当我们学会了这些之后,都知道概念了,都想实际的尝试一下。 本节的目的: 1.搭建一主一从架构 2.测试:往主节点去写,在从节点去读,可以读到,主从架构就搭建成功了 1.1 java环境安装 首先需要在安装好java环境的机器上操作: wget http

秦怀杂货店 1200
上一篇: Redis的持久化
下一篇: Redis主从架构
小李不秃头♛
博客等级 码龄2年 619粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值