当前位置: 首页 > 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;是理…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...