【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中,不会写回配置中。

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

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

相关文章

Vue打包Webpack源码及物理路径泄漏问题解决

修复前&#xff1a; 找到vue.config.js文件&#xff0c;在其中增加配置 module.exports {productionSourceMap: false,// webpack 配置configureWebpack: {devtool: false,}}其中打包的物理路径泄露我这边试了好多次&#xff0c;发现只有打包的时候NODE_ENVproduction 才能保…

Vue中的计算属性和侦听器(监视器)

一、computed计算属性 1.概念 基于现有的数据&#xff0c;计算出来的新属性。 依赖的数据变化&#xff0c;自动重新计算。 2.语法 声明在 computed 配置项中&#xff0c;一个计算属性对应一个函数 使用起来和普通属性一样使用 {{ 计算属性名}} 3.注意 computed配置项和da…

【网络】 WireShark实现TCP三次握手和四次挥手

目录 一、WireShark介绍 二、什么是TCP 三、TCP三次握手 四、TCP四次挥手 一、WireShark介绍 WireShark是一个开源的网络分析工具&#xff0c;用于捕获和分析网络数据包。它可以在多个操作系统上运行&#xff0c;包括Windows、Mac OS和Linux。 使用WireShark&#xff0c;…

Faster-Whisper 实时识别电脑语音转文本

Faster-Whisper 实时识别电脑语音转文本 前言项目搭建环境安装Faster-Whisper下载模型编写测试代码运行测试代码实时转写脚本 参考 前言 以前做的智能对话软件接的Baidu API&#xff0c;想换成本地的&#xff0c;就搭一套Faster-Whisper吧。 下面是B站视频实时转写的截图 项…

版本管理git及其命令介绍-附带详细操作

前言 在版本管理时代之前&#xff0c;人们写软件的方式如下图1所示 图1 无版本管理的代码 其坏处就是软件版本随着时间越来越多&#xff0c;每个版本修改了什么内容&#xff0c;修改了哪些文件&#xff0c;如果没有详细记录也不知道。这样久会导致如果我们想回退到某个版本内…

MCU方案选型和进口替代,点击查看~

一、MCU简介 MCU&#xff08;微控制单元&#xff09;俗称单片机&#xff0c;可被认为是CPU的缩减版本&#xff0c;把CPU的频率与规格进行缩减处理&#xff0c;并将RAM、ROM、时钟、A/D转换、定时/计数器、UART 、DMA等电路单元&#xff0c;甚至包括USB接口、LCD驱动电路都整合…

缓存框架jetcache

在实际应用中&#xff0c;并不是单一的使用本地缓存或者redis&#xff0c;更多是组合使用来满足不同的业务场景。 jetcache组件实现了优雅的组合本地缓存和远程缓存。 支持多种缓存类型&#xff1a;本地缓存、分布式缓存、多级缓存。 官网地址&#xff1a;https://github.com…

《向量数据库指南》——Milvus Cloud丝滑入库是影响开发体验的第一步

除了查询之外,“插入”应该是使用最多的一个数据库操作,所有后续的工作也是建立在数据成功插入的基础上。丝滑的入库体验,是影响开发体验的第一步,也是至关重要的一步。 Milvus Cloud 社区对于“插入”的讨论,主要集中在数据插入的实践经验上: “插入的速度怎么优…

各版本的Qt Creator的下载地址

2024年2月3日&#xff0c;周六上午 Index of /official_releases/qtcreatorhttps://download.qt.io/official_releases/qtcreator/ 如果想下载测试中的最新版Qt Creator的快照可以去这个地址 Index of /snapshots/qtcreatorhttps://download.qt.io/snapshots/qtcreator/

MySQL中的视图与索引

目录 一、视图 1.1 什么是视图 1.2 为什么要使用视图 1.3 视图的作用与特点 1.4 视图的创建 1.5 视图的使用规则 1.6 视图的修改与删除 修改&#xff1a; 删除&#xff1a; 二、索引 2.1 什么是索引 索引的原理&#xff1a; 2.2 索引的优缺点 2.2.1 索引的优点&a…

浅谈智慧消防在铁路系统中的应用与发展

摘要&#xff1a;文章从基于物联网技术的“智慧消防”概念入手&#xff0c;探讨了智慧消防物联网技术在铁路工程中的应用&#xff0c;分析了在实际应用过程中存在的部分难点&#xff0c;并提出了新型物联网无线组网、智能传感器技术、图形可视化技术及安全隐患预测与评估的技术…

C# JSON序列化、反序列化

在 C# 中&#xff0c;你可以使用 Newtonsoft.Json 库&#xff08;也称为 Json.NET&#xff09;来进行 JSON 的序列化和反序列化。下面是一个简单的示例&#xff1a; using Newtonsoft.Json; using System;public class Person {public string Name { get; set; }public int Ag…

MongoDB的索引与索引字段的顺序

想提高数据库的查询效率需要建立索引&#xff0c;用索引查询。使用索引查询和不使用索引查询提升的效率和数据库表的记录条数和调用此时有关系。若记录足够大&#xff0c;用索引查询和不用索引查询相差一千倍以上很正常。 MongoDB默认为主键字段_id创建唯一索引&#xff0c;这个…

寒假作业2月2号

第一章 命名空间 一&#xff0e;选择题 1、编写C程序一般需经过的几个步骤依次是&#xff08;C &#xff09; A. 编辑、调试、编译、连接 B. 编辑、编译、连接、运行 C. 编译、调试、编辑、连接 D. 编译、编辑、连接、运行 2、所谓数据封装就是将一组数据和与这组数据有关…

python 爬虫篇(1)---->re正则的详细讲解(附带演示代码)

re正则的详细讲解 文章目录 re正则的详细讲解前言4.re正则表达式(1)e正则的匹配模式(2) re.search 的使用(3)re.findall()的使用(4)re.sub()的使用结语前言 大家好,今天我将开始更新python爬虫篇,陆续更新几种解析数据的方法,例如 re正则表达式beautifulsoup xpath lxml 等等,…

情人节送什么好?情人节送什么数码礼物?这总有你喜欢的那款!

​情人节礼物选择繁多&#xff0c;但许多人钟爱数码产品。以下是我为您精心挑选的几款实用且深受男女生喜爱的数码产品。它们不仅功能出色&#xff0c;还能为您的节日增添一份特别的惊喜。 一、南卡OE MIX蓝牙耳机 南卡OE MIX无疑是在情人节礼物预算千元以内的首选。它配备了重…

代码随想录算法训练营第二十四天|77. 组合

77. 组合 回溯法&#xff1a; public class Solution {List<IList<int>> resultnew List<IList<int>>();List<int> pathnew List<int>();public IList<IList<int>> Combine(int n, int k) {backtracking(n,k,1);return resu…

文旅行业解决方案

顶层规划设计 系统化地为目的地、政府、景区、游客等提供基于全流程服务和管理的智慧文旅应用体系 智慧产品矩阵 整合腾讯产品矩阵和先进技术&#xff0c;持续研发创新产品&#xff0c;实现各文旅场景智慧化及产业协同式发展 文创孵化平台 用科技文化助力中华文明复兴&…

MySQL的ACID、死锁、MVCC问题

1 ACID ACID代表原子性&#xff08;atomicity&#xff09;、一致性&#xff08;consistency&#xff09;、隔离性&#xff08;isolation&#xff09;和持久性&#xff08;durability&#xff09;。一个确保数据安全的事务处理系统&#xff0c;必须满足这些密切相关的标准。 原…

【Spring实战】33 Spring Boot3 集成 Nacos 配置中心

文章目录 1. 配置中心定义2. 解决哪些问题3. 常用的配置中心4. 使用示例1&#xff09;没引入 Nacos 配置中心2&#xff09;引入依赖3&#xff09;配置Nacos连接信息4&#xff09;在 Nacos 上配置属性5&#xff09;在 Spring Boot 中使用配置6&#xff09;启动服务&验证7&am…