【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.properties或application.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中使用RedisTemplate或StringRedisTemplate来与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注入RedisTemplate或StringRedisTemplate来与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(可选)4. 使用RedisTemplate或StringRedisTemplate5. 测试和验证 集群配置在application.properties中配置在application.yml中配置 主从配置1. 配置Redis服务器使用配置文件使用命令行 2. 配置…...
网络安全概论——身份认证
一、身份证明 身份证明可分为以下两大类 身份验证——“你是否是你所声称的你?”身份识别——“我是否知道你是谁?” 身份证明系统设计的三要素: 安全设备的系统强度用户的可接受性系统的成本 实现身份证明的基本途径 所知:个…...
OpenHarmony-4.HDI 框架
HDI 框架 1.HDI介绍 HDI(Hardware Device Interface,硬件设备接口)是HDF驱动框架为开发者提供的硬件规范化描述性接口,位于基础系统服务层和设备驱动层之间,是连通驱动程序和系统服务进行数据流通的桥梁,是…...
leecode494.目标和
这道题目第一眼感觉就不像是动态规划,可以看出来是回溯问题,但是暴力回溯超时,想要用动态规划得进行一点数学转换 class Solution { public:int findTargetSumWays(vector<int>& nums, int target) {int nnums.size(),bagWeight0,s…...
在Spring中application 的配置属性(详细)
application 的配置属性。 这些属性是否生效取决于对应的组件是否声明为 Spring 应用程序上下文里的 Bean (基本是自动配置 的),为一个不生效的组件设置属性是没有用的。 multipart multipart.enabled 开启上传支持(默认&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索引类型总结
按照数据结构维度划分: BTree 索引:MySQL 里默认和最常用的索引类型。只有叶子节点存储 value,非叶子节点只有指针和 key。存储引擎 MyISAM 和 InnoDB 实现 BTree 索引都是使用 BTree,但二者实现方式不一样(前面已经介…...
数据结构——队列的模拟实现
大家好,上一篇博客我带领大家进行了数据结构当中的栈的模拟实现 今天我将带领大家实现一个新的数据结构————队列 一:队列简介 首先来认识一下队列: 队列就像我们上学时的排队一样,有一个队头也有一个队尾。 有人入队的话就…...
在window环境下安装openssl生成钥私、证书和签名,nodejs利用express实现ssl的https访问和测试
在生成我们自己的 SSL 证书之前,让我们创建一个简单的 Express应用程序。 要创建一个新的 Express 项目,让我们创建一个名为node-ssl -server 的目录,用终端cmd中进入node-ssl-server目录。 cd node-ssl-server 然后初始化一个新的 npm 项目…...
Redis 最佳实践
这是以前写下来的文章,发出来备份一下 Redis 在企业中的最佳实践可以帮助提高性能、可用性和数据管理效率。以下是一些推荐的做法: 选择合适的数据结构: 根据需求选择适当的 Redis 数据结构(如 Strings、Lists、Sets、Hashes、So…...
网站灰度发布?Tomcat的8005、8009、8080三个端口的作用什么是CDNLVS、Nginx和Haproxy的优缺点服务器无法开机时
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默, 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……) 2、学会Oracle数据库入门到入土用法(创作中……) 3、手把…...
从客户跟进到库存管理:看板工具赋能新能源汽车销售
在新能源汽车市场日益扩张的今天,门店销售管理变得更加复杂和重要。从跟踪客户线索到优化订单流程,再到团队协作,效率低下常常成为许多门店的“隐形成本”。如果你曾为销售流程不畅、客户管理混乱而苦恼,那么一种简单直观的工具—…...
算法时间空间复杂度的计算
一、时间复杂度 :找循环最内层 二、空间复杂度: 1.找int float等变量 2.递归调用:空间复杂度递归调用的深度 int 型变量: 四个字节...
人才画像系统如何支撑企业的人才战略落地
在当今竞争激烈的商业环境中,企业的人才战略对于其长期发展至关重要。为了有效实施人才战略,企业需要一套精准、高效的人才管理工具,而人才画像系统正是满足这一需求的关键解决方案。本文将探讨人才画像系统如何支撑企业的人才战略落地&#…...
[数据结构] 链表
目录 1.链表的基本概念 2.链表的实现 -- 节点的构造和链接 节点如何构造? 如何将链表关联起来? 3.链表的方法(功能) 1).display() -- 链表的遍历 2).size() -- 求链表的长度 3).addFirst(int val) -- 头插法 4).addLast(int val) -- 尾插法 5).addIndex -- 在任意位置…...
三格电子——新品IE103转ModbusTCP网关
型号:SG-TCP-IEC103 产品概述 IE103转ModbusTCP网关型号SG-TCP-IEC103,是三格电子推出的工业级网关(以下简称网关),主要用于IEC103数据采集、DLT645-1997/2007数据采集,IEC103支持遥测和遥信,可…...
遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR
我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时…...
深入详解神经网络基础知识——理解前馈神经网络( FNN)、卷积神经网络(CNN)和循环神经网络(RNN)等概念及应用
深入详解神经网络基础知识 深度学习作为人工智能(AI)的核心分支之一,近年来在各个领域取得了显著的成果。从图像识别、自然语言处理到自动驾驶,深度学习技术的应用无处不在。而深度学习的基础,神经网络,是理…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
