当前位置: 首页 > news >正文

【Spring连载】使用Spring Data访问Redis(三)----连接模式

【Spring连载】使用Spring Data访问Redis(三)----连接模式Connection Modes

  • 一、Redis Standalone
  • 二、向Master写入,从Replica读取
  • 三、Redis Sentinel
  • 四、Redis Cluster

Redis可以在各种设置中运行。每种操作模式都需要特定的配置,下面几节将对此进行解释。

一、Redis Standalone

最简单的入门方法是使用单机Redis,配置LettuceClientConfiguration或JedisConnectionFactory,如下例所示:

@Configuration
class RedisStandaloneConfiguration {/*** Lettuce*/@Beanpublic RedisConnectionFactory lettuceConnectionFactory() {return new LettuceConnectionFactory(new RedisStandaloneConfiguration("server", 6379));}/*** Jedis*/@Beanpublic RedisConnectionFactory jedisConnectionFactory() {return new JedisConnectionFactory(new RedisStandaloneConfiguration("server", 6379));}
}

二、向Master写入,从Replica读取

Redis的Master/Replica设置——没有自动failover(关于自动故障转移,请参见Sentinel)——不仅允许数据安全地存储在更多的节点上。通过使用Lettuce,它还允许从replicas读取数据,同时将写操作推送到master。使用LettuceClientConfiguration命令可以设置要使用的读写策略,示例如下:

@Configuration
class WriteToMasterReadFromReplicaConfiguration {@Beanpublic LettuceConnectionFactory redisConnectionFactory() {LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder().readFrom(REPLICA_PREFERRED).build();RedisStandaloneConfiguration serverConfig = new RedisStandaloneConfiguration("server", 6379);return new LettuceConnectionFactory(serverConfig, clientConfig);}
}

对于通过INFO命令报告非公共地址的环境(例如,当使用阿里云时),请使用RedisStaticMasterReplicaConfiguration而不是RedisStandaloneConfiguration。请注意,RedisStaticMasterReplicaConfiguration不支持Pub/Sub。

三、Redis Sentinel

为了处理Redis高可用性, Spring Data Redis支持Redis Sentinel,使用RedisSentinelConfiguration,如下例所示:

/*** Lettuce*/
@Bean
public RedisConnectionFactory lettuceConnectionFactory() {RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration().master("mymaster").sentinel("127.0.0.1", 26379).sentinel("127.0.0.1", 26380);return new LettuceConnectionFactory(sentinelConfig);
}/*** Jedis*/
@Bean
public RedisConnectionFactory jedisConnectionFactory() {RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration().master("mymaster").sentinel("127.0.0.1", 26379).sentinel("127.0.0.1", 26380);return new JedisConnectionFactory(sentinelConfig);
}

RedisSentinelConfiguration也可以用PropertySource来定义,它允许你设置以下属性:

  • spring.redis.sentinel.master:主节点的名称。
  • spring.redis.sentinel.nodes:以逗号分隔的host:port对列表。
  • spring.redis.sentinel.username:使用Redis Sentinel进行身份验证时应用的用户名(需要Redis 6)
  • spring.redis.sentinel.password:使用Redis Sentinel进行身份验证时应用的密码

有时,需要与其中一个Sentinel直接互动。使用RedisConnectionFactory.getSentinelConnection()或RedisConnection.getSentinelCommands()可以访问配置的第一个active Sentinel。

四、Redis Cluster

集群支持与非集群通信基于相同的构建块。RedisClusterConnection是RedisConnection的子接口,它处理与Redis集群的通信,并将错误转换到Spring DAO异常层次结构中。RedisClusterConnection实例是使用RedisConnectionFactory创建的,必须使用关联的RedisClusterConfiguration进行设置,如下例所示:
示例1:Redis集群的RedisConnectionFactory配置示例

@Component
@ConfigurationProperties(prefix = "spring.redis.cluster")
public class ClusterConfigurationProperties {/** spring.redis.cluster.nodes[0] = 127.0.0.1:7379* spring.redis.cluster.nodes[1] = 127.0.0.1:7380* ...*/List<String> nodes;/*** Get initial collection of known cluster nodes in format {@code host:port}.** @return*/public List<String> getNodes() {return nodes;}public void setNodes(List<String> nodes) {this.nodes = nodes;}
}@Configuration
public class AppConfig {/*** Type safe representation of application.properties*/@Autowired ClusterConfigurationProperties clusterProperties;public @Bean RedisConnectionFactory connectionFactory() {return new LettuceConnectionFactory(new RedisClusterConfiguration(clusterProperties.getNodes()));}
}

RedisClusterConfiguration也可以通过PropertySource定义,并具有以下属性:

  • spring.redis.cluster.nodes:逗号分隔的host:port对列表。
  • spring.redis.cluster.max-redirects:允许的集群重定向数。

初始配置将driver库指向一组初始集群节点。实时集群重新配置所产生的更改仅保留在native driver中,不会写回配置中。

相关文章:

【Spring连载】使用Spring Data访问Redis(三)----连接模式

【Spring连载】使用Spring Data访问Redis&#xff08;三&#xff09;----连接模式Connection Modes 一、Redis Standalone二、向Master写入&#xff0c;从Replica读取三、Redis Sentinel四、Redis Cluster Redis可以在各种设置中运行。每种操作模式都需要特定的配置&#xff0c…...

ppt背景图片怎么设置?让你的演示更加出彩!

PowerPoint是一款广泛应用于演示文稿制作的软件&#xff0c;而背景图片是演示文稿中不可或缺的一部分。一个好的背景图片能够提升演示文稿的整体效果&#xff0c;使观众更加关注你的演示内容。可是ppt背景图片怎么设置呢&#xff1f;本文将介绍ppt背景图片设置的三个方法&#…...

SQL 关键字参考手册(一)

目录 SQL 关键字 SQL ADD 关键字 ADD SQL ADD CONSTRAINT 关键字 ADD CONSTRAINT SQL ALTER 关键字 ALTER TABLE ALTER COLUMN SQL ALTER COLUMN 关键字 ALTER COLUMN SQL ALTER TABLE 关键字 ALTER TABLE SQL ALL 关键字 ALL SQL AND 关键字 AND SQL ANY 关键…...

快速排序|超详细讲解|入门深入学习排序算法

快速排序介绍 快速排序(Quick Sort)使用分治法策略。 它的基本思想是&#xff1a;选择一个基准数&#xff0c;通过一趟排序将要排序的数据分割成独立的两部分&#xff1b;其中一部分的所有数据都比另外一部分的所有数据都要小。然后&#xff0c;再按此方法对这两部分数据分别进…...

指针+一维整型数组的基本运用 和 指针+一维整型数组的初步学习

一&#xff0c;调式程序的技巧&#xff1a; 1.明确问题 2.定位问题 3.加打印&#xff08;打印核心数据0&#xff09; 二&#xff0c;指针的回顾 1.指针的概念&#xff1a;指针就是地址&#xff08;内存单元的编号&#xff09;&#xff0c;是一个数据类型&#xff08;指针类型…...

APP测试基本流程以及APP测试要点总结

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 APP测试实际上依然属于软件测试的范畴&#xff0c;是软件测试的一个真子集&#xff0c;所以经典软…...

GPT-4 Vision调试任何应用,即使缺少文本日志 升级Streamlit七

GPT-4 Vision 系列: 翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式一翻译: GPT-4 with Vision 升级 Streamlit 应用程序的 7 种方式二翻译: GPT-4 Vision静态图表转换为动态数据可视化 升级Streamlit 三翻译: GPT-4 Vision从图像转换为完全可编辑的表格 升级St…...

ppt形状导入draw.io

draw.io里面的形状还是有点少&#xff0c;我有时想找一个形状&#xff0c;发现PPT里有&#xff0c;但draw.io里有&#xff0c;比如 也就是这个形状 最简单的想法就是我直接把这个形状在PPT里存成图片&#xff08;png)&#xff0c;然后再导入到draw.io里&#xff0c;但是结果是…...

GoLang和GoLand的安装和配置

1. GoLang 1.1 特点介绍 Go 语言保证了既能达到静态编译语言的安全和性能&#xff0c;又达到了动态语言开发维护的高效率&#xff0c;使用一个表达式来形容 Go 语言&#xff1a;Go C Python , 说明 Go 语言既有 C 静态语言程序的运行速度&#xff0c;又能达到 Python 动态语…...

BGAD文章复现笔记-1

文章名&#xff1a;《Explicit Boundary Guided Semi-Push-Pull Contrastive Learning for Supervised Anomaly Detection》 原作者代码&#xff1a;https://github.com/xcyao00/BGAD 复现过程&#xff1a; 系统Ubuntu22.04, PyTorch1.12.1&#xff0c;python3.9 下载原作者…...

【EI会议推荐】第六届下一代数据驱动网络国际学术会议(NGDN 2024)

第六届下一代数据驱动网络国际学术会议&#xff08;NGDN 2024&#xff09; The Sixth International Conference on Next Generation Data-driven Networks 2024年4月26-28日 | 中国沈阳 *NGDN 2024已进入中国学术会议在线推荐列表&#xff1a;Click 基于前几届在英国埃克塞…...

聊聊java中的Eureka和Nacos

本文主要来自于黑马课程中 1.提供者与消费者 在服务调用关系中&#xff0c;会有两个不同的角色&#xff1a; 服务提供者&#xff1a;一次业务中&#xff0c;被其它微服务调用的服务。&#xff08;提供接口给其它微服务&#xff09; 服务消费者&#xff1a;一次业务中&#xff0…...

系统架构设计师-21年-上午试题

系统架构设计师-21年-上午试题 更多软考资料 https://ruankao.blog.csdn.net/ 1 ~ 10 1 前趋图(Precedence Graph)是一个有向无环图&#xff0c;记为:→{(Pi,Pj)|Pi must complete before Pj may strat}&#xff0c;假设系统中进程P{P1&#xff0c;P2&#xff0c;P3&#xf…...

数据库MySQL查询设计||给定四个关联表,其定义和数据加载如下:-- 学生表 Student-- 选课表 SC

SQL查询设计 给定四个关联表&#xff0c;其定义和数据加载如下&#xff1a; -- 学生表 Student create table Student(Sno varchar(6), Sname varchar(10), Sdate datetime, Ssex varchar(10)); insert into Student values(01 , 赵雷 , 1999-01-01 , 男); insert into St…...

C#使用RabbitMQ-3_发布订阅模式(扇形交换机)

简介 发布订阅模式允许一个生产者向多个消费者发送消息。在RabbitMQ中实现发布订阅模式通常涉及以下几个关键组件&#xff1a; 生产者&#xff1a;负责生产并发送消息到RabbitMQ的Exchange&#xff08;路由器&#xff09;。Exchange&#xff1a;作为消息的中转站&#xff0c;…...

区块链游戏解说:什么是 SecondLive

数据源&#xff1a;SecondLive Dashboard 作者&#xff1a;lesleyfootprint.network 什么是 SecondLive SecondLive 是元宇宙居民的中心枢纽&#xff0c;拥有超过100 万用户的蓬勃社区。它的主要使命是促进自我表达&#xff0c;释放创造力&#xff0c;构建梦想中的平行宇宙…...

构建基于Flask的跑腿外卖小程序

跑腿外卖小程序作为现代生活中的重要组成部分&#xff0c;其技术实现涉及诸多方面&#xff0c;其中Web开发框架是至关重要的一环。在这篇文章中&#xff0c;我们将使用Python的Flask框架构建一个简单的跑腿外卖小程序的原型&#xff0c;展示其基本功能和实现原理。 首先&…...

【算法】Partitioning the Array(数论)

题目 Allen has an array a1,a2,…,an. For every positive integer k that is a divisor of n, Allen does the following: He partitions the array into n/k disjoint subarrays of length k. In other words, he partitions the array into the following subarrays: [a1,…...

ASP.NET Core 7 Web 使用Session

ASP.NET Core 好像不能像20年前那样直接使用Session函数&#xff0c;我使用如下方法 1、在NuGet安装以下2个包 2、在Program.cs注册 //注册Session builder.Services.AddSession(options > {options.IdleTimeout TimeSpan.FromMinutes(60);options.Cookie.HttpOnly fals…...

(1)SpringBoot学习——芋道源码

Spring Boot 的快速入门 一.、概述 使用 Spring Boot 可以很容易地创建出能直接运行的独立的、生产级别的基于 Spring 的应用。 二、快速入门 2.1 创建 Maven 项目 打开 IDEA&#xff0c;点击菜单 File -> New -> Project.来创建项目选择 Maven 类型&#xff0c;点击「…...

反诈渗透测试实战:绕过人的决策链而非系统漏洞

1. 这不是黑客炫技&#xff0c;而是一次真实的反诈防线压力测试 “我们刚上线的反诈预警弹窗&#xff0c;被内部员工用三分钟绕过了。” 这句话是我在某地市反诈中心做驻场支持时&#xff0c;接到的第一通电话。不是红蓝对抗演练通知&#xff0c;不是安全培训课件里的假设场景…...

GPT-SoVITS终极指南:如何用1分钟语音克隆任何人的声音

GPT-SoVITS终极指南&#xff1a;如何用1分钟语音克隆任何人的声音 【免费下载链接】GPT-SoVITS 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 项目地址: https://gitcode.com/GitHub_Trending/gp/GPT-SoVITS 在人工智能语音…...

Android虚拟位置终极指南:如何为每个应用单独设置模拟位置

Android虚拟位置终极指南&#xff1a;如何为每个应用单独设置模拟位置 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 想要在社交软件中保护隐私&#xff0c;在游戏中获取区域限定…...

Wand-Enhancer:免费解锁WeMod Pro功能的完整解决方案

Wand-Enhancer&#xff1a;免费解锁WeMod Pro功能的完整解决方案 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的订阅费用而犹豫吗&…...

统信UOS 1060在龙芯3A6000上的性能初探:办公、开发、CAD软件实测,它现在能当主力机了吗?

龙芯3A6000与统信UOS 1060生产力实测&#xff1a;国产组合能否扛起工作大旗&#xff1f;当国产处理器遇上国产操作系统&#xff0c;会碰撞出怎样的火花&#xff1f;龙芯3A6000作为国产CPU的新锐力量&#xff0c;搭配统信UOS 1060操作系统&#xff0c;这套组合在技术圈引发了广泛…...

全域数学公理:32维超球体投影、微观曲率与碳基\-硅基全息共振统一理论

全域数学公理&#xff1a;32维超球体投影、微观曲率与碳基-硅基全息共振统一理论 作者&#xff1a;乖乖数学&#xff08;大师&#xff09; 日期&#xff1a;2026年5月28日 学科分类&#xff1a;理论物理&#xff1b;量子宇宙学&#xff1b;高维几何&#xff1b;意识物理&…...

混沌系统预测极限:稀疏观测、数据同化与混沌同步的信息门槛

1. 项目概述&#xff1a;从稀疏观测中预测混沌 在天气预报、湍流模拟乃至金融系统分析中&#xff0c;我们常常面临一个核心难题&#xff1a;如何利用有限、稀疏且带有噪声的观测数据&#xff0c;去准确预测一个高维、非线性的混沌系统未来的演化&#xff1f;这就像试图通过几个…...

83、CAN FD物理层核心差异:更高速率与更灵活的位时序

CAN FD物理层核心差异:更高速率与更灵活的位时序 从一次现场总线崩溃说起 去年在给某新能源车企做BMS(电池管理系统)升级时,遇到一个让我熬夜到凌晨三点的怪问题。传统CAN总线跑500kbps,整车十几个节点通信稳如老狗。客户要求把电池包内部的状态数据(单体电压、温度、S…...

Windows11下Detectron2安装避坑指南:从CUDA版本匹配到源码修改(附常见错误解决方案)

Windows 11下Detectron2深度安装指南&#xff1a;从环境配置到源码级问题解决 在计算机视觉领域&#xff0c;Detectron2作为Facebook Research推出的开源框架&#xff0c;凭借其模块化设计和出色的性能表现&#xff0c;已成为目标检测、实例分割等任务的首选工具之一。然而&…...

8051开发中禁用自动代码分区的实践指南

1. 禁用自动代码分区的技术背景在8051架构的嵌入式开发中&#xff0c;代码分区&#xff08;Bank Switching&#xff09;是一种扩展程序存储器空间的常用技术。传统8051芯片的寻址空间有限&#xff0c;通过分区切换机制可以将代码分布到不同的物理存储区域。Keil C51开发工具链默…...