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

【Springboot知识】Redis基础-springboot集成redis相关配置

文章目录

      • 1. 添加依赖
      • 2. 配置Redis连接
      • 3. 配置RedisTemplate(可选)
      • 4. 使用RedisTemplate或StringRedisTemplate
      • 5. 测试和验证
    • 集群配置
      • 在`application.properties`中配置
      • 在`application.yml`中配置
    • 主从配置
      • 1. 配置Redis服务器
        • 使用配置文件
        • 使用命令行
      • 2. 配置Spring Boot客户端
        • 在`application.properties`中配置
        • 在`application.yml`中配置
      • 3. 使用RedisTemplate或StringRedisTemplate
      • 4. 注意事项

在Spring Boot中接入Redis通常涉及以下几个步骤:

1. 添加依赖

首先,你需要在你的pom.xml(对于Maven项目)或build.gradle(对于Gradle项目)中添加Spring Data Redis的依赖。

对于Maven:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

对于Gradle:

implementation 'org.springframework.boot:spring-boot-starter-data-redis'

2. 配置Redis连接

application.propertiesapplication.yml文件中配置Redis的连接信息。这包括Redis服务器的地址、端口、密码(如果有的话)以及数据库索引等。

例如,在application.properties中:

spring.redis.host=localhost
spring.redis.port=6379
# spring.redis.password=yourpassword  # 如果Redis服务器设置了密码,则取消注释并填写
spring.redis.database=0

或者在application.yml中:

spring:redis:host: localhostport: 6379# password: yourpassword  # 如果Redis服务器设置了密码,则取消注释并填写database: 0

3. 配置RedisTemplate(可选)

虽然Spring Boot会自动配置一个RedisTemplate,但你可能需要自定义它的序列化器,以便正确地存储和检索你的数据。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> template = new RedisTemplate<>();template.setConnectionFactory(redisConnectionFactory);// 使用StringRedisSerializer来序列化和反序列化redis的key值StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();template.setKeySerializer(stringRedisSerializer);template.setHashKeySerializer(stringRedisSerializer);// 使用GenericJackson2JsonRedisSerializer来序列化和反序列化redis的value值GenericJackson2JsonRedisSerializer jackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();template.setValueSerializer(jackson2JsonRedisSerializer);template.setHashValueSerializer(jackson2JsonRedisSerializer);template.afterPropertiesSet();return template;}
}

4. 使用RedisTemplate或StringRedisTemplate

现在你可以在你的Spring Bean中使用RedisTemplateStringRedisTemplate来与Redis进行交互了。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;@Service
public class MyRedisService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;public void saveValue(String key, Object value) {redisTemplate.opsForValue().set(key, value);}public Object getValue(String key) {return redisTemplate.opsForValue().get(key);}// 其他与Redis交互的方法...
}

5. 测试和验证

最后,编写一些单元测试或集成测试来验证你的Redis配置是否正确,以及你的服务是否能够正确地与Redis进行交互。

确保Redis服务器正在运行,并且你的Spring Boot应用程序能够连接到它。然后,你可以通过调用你的服务方法来测试Redis的读写操作。

以上就是Spring Boot接入Redis的基本步骤。根据你的具体需求,你可能还需要进行更多的配置和定制。

集群配置

application.properties中配置

# Redis集群节点地址,多个节点用逗号分隔
spring.redis.cluster.nodes=192.168.1.100:7000,192.168.1.100:7001,192.168.1.100:7002
# Redis密码(如果设置了密码)
spring.redis.password=yourpassword
# 在集群上执行命令时重定向的最大数量
spring.redis.cluster.max-redirects=3
# 连接池配置
spring.redis.lettuce.pool.max-idle=10
spring.redis.lettuce.pool.min-idle=5
spring.redis.lettuce.pool.max-active=20
spring.redis.lettuce.pool.max-wait=-1  # 或者设置一个具体的毫秒数

application.yml中配置

spring:redis:cluster:nodes: 192.168.1.100:7000,192.168.1.100:7001,192.168.1.100:7002password: yourpassword  # 如果设置了密码max-redirects: 3lettuce:pool:max-idle: 10min-idle: 5max-active: 20max-wait: -1  # 或者设置一个具体的毫秒数

主从配置

在Spring Boot中配置Redis主从(Master-Slave)模式通常涉及设置Redis服务器的配置以及Spring Boot客户端的连接配置。以下是一个简要的指南,帮助你完成这一任务:

1. 配置Redis服务器

首先,你需要在Redis服务器上配置主从关系。这通常是在Redis配置文件(通常是redis.conf)中或通过命令行参数来完成的。

使用配置文件

在主节点(Master)的redis.conf中,你通常不需要做任何特殊的配置,除非你有特定的需求。

在从节点(Slave)的redis.conf中,你需要添加以下配置来指定主节点的地址和端口:

replicaof <master-ip> <master-port>

注意:在Redis 5.0及更高版本中,slaveof命令已被重命名为replicaof

使用命令行

你也可以通过Redis命令行来配置主从关系。连接到从节点并执行以下命令:

replicaof <master-ip> <master-port>

2. 配置Spring Boot客户端

在Spring Boot中,你需要配置Redis客户端以连接到主节点(因为从节点通常用于只读操作,并且会自动从主节点同步数据)。

application.properties中配置
# Redis主节点地址和端口
spring.redis.host=<master-ip>
spring.redis.port=<master-port># Redis密码(如果设置了密码)
spring.redis.password=yourpassword# 连接池配置(可选)
spring.redis.jedis.pool.max-active=10
spring.redis.jedis.pool.max-idle=5
spring.redis.jedis.pool.min-idle=2
spring.redis.jedis.pool.max-wait=-1ms

注意:这里使用的是Jedis连接池的配置,因为Lettuce是Spring Boot 2.x的默认Redis客户端,但你可以通过指定spring.redis.client-type=jedis来切换到Jedis。如果你使用Lettuce,配置将略有不同。

application.yml中配置
spring:redis:host: <master-ip>port: <master-port>password: yourpassword  # 如果设置了密码jedis:pool:max-active: 10max-idle: 5min-idle: 2max-wait: -1ms

3. 使用RedisTemplate或StringRedisTemplate

在你的Spring Bean中,你可以通过@Autowired注入RedisTemplateStringRedisTemplate来与Redis进行交互。由于你配置的是主节点,所以所有的写操作都会发送到主节点,而读操作(取决于你的配置和客户端的实现)可能会发送到主节点或从节点。

4. 注意事项

  • 读写分离:在Redis主从配置中,从节点通常用于只读操作。然而,Spring Boot客户端默认不会将读操作路由到从节点,除非你使用了特定的库或配置来支持这一点。例如,你可以使用Spring Data Redis的Lettuce客户端,并通过配置来启用读写分离。
  • 故障转移:在主节点故障时,从节点不会自动升级为主节点。这通常需要额外的工具或配置,如Redis Sentinel或Redis Cluster。
  • 连接管理:确保你的连接池配置与你的应用需求和Redis服务器的性能相匹配。
  • 安全性:如果Redis服务器配置了密码,请确保在Spring Boot配置中正确设置了密码。

通过遵循这些步骤,你应该能够成功地将Spring Boot应用配置为连接到Redis主从集群,并利用Redis的高可用性特性。然而,请注意,如果你需要自动的故障转移和更高级的高可用性特性,你可能需要考虑使用Redis Sentinel或Redis Cluster。

相关文章:

【Springboot知识】Redis基础-springboot集成redis相关配置

文章目录 1. 添加依赖2. 配置Redis连接3. 配置RedisTemplate&#xff08;可选&#xff09;4. 使用RedisTemplate或StringRedisTemplate5. 测试和验证 集群配置在application.properties中配置在application.yml中配置 主从配置1. 配置Redis服务器使用配置文件使用命令行 2. 配置…...

网络安全概论——身份认证

一、身份证明 身份证明可分为以下两大类 身份验证——“你是否是你所声称的你&#xff1f;”身份识别——“我是否知道你是谁&#xff1f;” 身份证明系统设计的三要素&#xff1a; 安全设备的系统强度用户的可接受性系统的成本 实现身份证明的基本途径 所知&#xff1a;个…...

OpenHarmony-4.HDI 框架

HDI 框架 1.HDI介绍 HDI&#xff08;Hardware Device Interface&#xff0c;硬件设备接口&#xff09;是HDF驱动框架为开发者提供的硬件规范化描述性接口&#xff0c;位于基础系统服务层和设备驱动层之间&#xff0c;是连通驱动程序和系统服务进行数据流通的桥梁&#xff0c;是…...

leecode494.目标和

这道题目第一眼感觉就不像是动态规划&#xff0c;可以看出来是回溯问题&#xff0c;但是暴力回溯超时&#xff0c;想要用动态规划得进行一点数学转换 class Solution { public:int findTargetSumWays(vector<int>& nums, int target) {int nnums.size(),bagWeight0,s…...

在Spring中application 的配置属性(详细)

application 的配置属性。 这些属性是否生效取决于对应的组件是否声明为 Spring 应用程序上下文里的 Bean &#xff08;基本是自动配置 的&#xff09;&#xff0c;为一个不生效的组件设置属性是没有用的。 multipart multipart.enabled 开启上传支持&#xff08;默认&a…...

jvm符号引用和直接引用

在解析阶段中,符号引用和直接引用是Java类加载和内存管理中的重要概念,它们之间存在显著的区别。以下是对这两个概念的详细解析: 一、定义与特性 符号引用(Symbolic Reference) 定义:符号引用是编译器生成的用于表示类、方法、字段等的引用方式。特性: 独立性:符号引用…...

一文流:JVM精讲(多图提醒⚠️)

一文流系列是作者苦于技术知识学了-忘了,背了-忘了的苦恼,决心把技术知识的要点一笔笔✍️出来,一图图画出来,一句句讲出来,以求刻在🧠里。 该系列文章会把核心要点提炼出来,以求掌握精髓,至于其他细节,写在文章里,留待后续回忆。 目前进度请查看: :::info https:/…...

python 分段拟合笔记

效果图: 源代码: import numpy as np import cv2 import matplotlib.pyplot as plt from numpy.polynomial.polynomial import Polynomialdef nihe(x_points,y_points,p_id):# 按照 p_id 将 points 分成两组group_0_x = []group_0_y = []group_1_x = []group_1_y = []for i, …...

Mysql索引类型总结

按照数据结构维度划分&#xff1a; BTree 索引&#xff1a;MySQL 里默认和最常用的索引类型。只有叶子节点存储 value&#xff0c;非叶子节点只有指针和 key。存储引擎 MyISAM 和 InnoDB 实现 BTree 索引都是使用 BTree&#xff0c;但二者实现方式不一样&#xff08;前面已经介…...

数据结构——队列的模拟实现

大家好&#xff0c;上一篇博客我带领大家进行了数据结构当中的栈的模拟实现 今天我将带领大家实现一个新的数据结构————队列 一&#xff1a;队列简介 首先来认识一下队列&#xff1a; 队列就像我们上学时的排队一样&#xff0c;有一个队头也有一个队尾。 有人入队的话就…...

在window环境下安装openssl生成钥私、证书和签名,nodejs利用express实现ssl的https访问和测试

在生成我们自己的 SSL 证书之前&#xff0c;让我们创建一个简单的 Express应用程序。 要创建一个新的 Express 项目&#xff0c;让我们创建一个名为node-ssl -server 的目录&#xff0c;用终端cmd中进入node-ssl-server目录。 cd node-ssl-server 然后初始化一个新的 npm 项目…...

Redis 最佳实践

这是以前写下来的文章&#xff0c;发出来备份一下 Redis 在企业中的最佳实践可以帮助提高性能、可用性和数据管理效率。以下是一些推荐的做法&#xff1a; 选择合适的数据结构&#xff1a; 根据需求选择适当的 Redis 数据结构&#xff08;如 Strings、Lists、Sets、Hashes、So…...

网站灰度发布?Tomcat的8005、8009、8080三个端口的作用什么是CDNLVS、Nginx和Haproxy的优缺点服务器无法开机时

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…...

从客户跟进到库存管理:看板工具赋能新能源汽车销售

在新能源汽车市场日益扩张的今天&#xff0c;门店销售管理变得更加复杂和重要。从跟踪客户线索到优化订单流程&#xff0c;再到团队协作&#xff0c;效率低下常常成为许多门店的“隐形成本”。如果你曾为销售流程不畅、客户管理混乱而苦恼&#xff0c;那么一种简单直观的工具—…...

算法时间空间复杂度的计算

一、时间复杂度 &#xff1a;找循环最内层 二、空间复杂度&#xff1a; 1.找int float等变量 2.递归调用&#xff1a;空间复杂度递归调用的深度 int 型变量: 四个字节...

人才画像系统如何支撑企业的人才战略落地

在当今竞争激烈的商业环境中&#xff0c;企业的人才战略对于其长期发展至关重要。为了有效实施人才战略&#xff0c;企业需要一套精准、高效的人才管理工具&#xff0c;而人才画像系统正是满足这一需求的关键解决方案。本文将探讨人才画像系统如何支撑企业的人才战略落地&#…...

[数据结构] 链表

目录 1.链表的基本概念 2.链表的实现 -- 节点的构造和链接 节点如何构造? 如何将链表关联起来? 3.链表的方法(功能) 1).display() -- 链表的遍历 2).size() -- 求链表的长度 3).addFirst(int val) -- 头插法 4).addLast(int val) -- 尾插法 5).addIndex -- 在任意位置…...

三格电子——新品IE103转ModbusTCP网关

型号&#xff1a;SG-TCP-IEC103 产品概述 IE103转ModbusTCP网关型号SG-TCP-IEC103&#xff0c;是三格电子推出的工业级网关&#xff08;以下简称网关&#xff09;&#xff0c;主要用于IEC103数据采集、DLT645-1997/2007数据采集&#xff0c;IEC103支持遥测和遥信&#xff0c;可…...

遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…...

深入详解神经网络基础知识——理解前馈神经网络( FNN)、卷积神经网络(CNN)和循环神经网络(RNN)等概念及应用

深入详解神经网络基础知识 深度学习作为人工智能&#xff08;AI&#xff09;的核心分支之一&#xff0c;近年来在各个领域取得了显著的成果。从图像识别、自然语言处理到自动驾驶&#xff0c;深度学习技术的应用无处不在。而深度学习的基础&#xff0c;神经网络&#xff0c;是理…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...