Springboot 开发 -- Redis 集成及配置

一、引言

Redis 是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中介。在现今的高并发、大数据量的互联网应用中,Redis 的作用愈发重要。Spring Boot 提供了对 Redis 的集成支持,使得开发者可以更加便捷地在项目中集成 Redis。

二、环境准备

在开始之前,请确保你的系统中已经安装了 Redis,并且 Redis 服务正在运行。

Redis 安装可以参考:Redis 实战 – Redis 安装

三、添加依赖

在 Spring Boot 项目的 pom.xml 文件中,添加 Redis 的相关依赖:

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

四、配置 Redis

在 application.yml 文件中,配置 Redis 的相关信息:

# Spring Boot Redis 配置  
spring:  redis:  # Redis 数据库索引(默认为0)  # 如果在 Redis 中配置了多个数据库,可以通过修改这个值来选择不同的数据库  database: 0  # Redis 服务器地址  host: localhost  # Redis 服务器连接端口  # Redis 默认端口是 6379  port: 6379  # Redis 服务器连接密码(默认为空)  password:   # Jedis 连接池配置  jedis:  pool:  # 连接池中的最大活跃连接数  # 设置为 8 表示同一时间最多有 8 个连接被使用  max-active: 8  # 连接池中的最大等待时间(毫秒)  # 当连接池中没有可用连接时,新的请求会等待这个时间,单位毫秒  # -1 表示无限等待  max-wait: -1ms  # 连接池中的最大空闲连接数  # 空闲连接指的是那些没有被使用的连接  max-idle: 8  # 连接池中的最小空闲连接数  # 当空闲连接数少于这个数时,连接池会创建新的连接  min-idle: 0  # 连接超时时间(毫秒)  # 当尝试连接 Redis 服务器时,如果在这个时间内没有连接成功,会抛出异常  timeout: 5000

五、使用 RedisTemplate

Spring Boot 提供了 RedisTemplate 来操作 Redis,可以直接注入使用。下面是一个简单的示例:

import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.data.redis.core.RedisTemplate;  
import org.springframework.stereotype.Service;  @Service  
public class RedisService {  @Autowired  private RedisTemplate<String, Object> redisTemplate;  public void setValue(String key, Object value) {  redisTemplate.opsForValue().set(key, value);  }  public Object getValue(String key) {  return redisTemplate.opsForValue().get(key);  }  // ... 其他 Redis 操作方法  
}

六、自定义序列化器

默认情况下,RedisTemplate 使用 JDK 序列化器,这可能会导致存储的数据体积较大。在实际开发中,可能会希望使用其他序列化器,如 JSON。以下是一个自定义 JSON 序列化器的示例:

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.Jackson2JsonRedisSerializer;  
import org.springframework.data.redis.serializer.StringRedisSerializer;  import com.fasterxml.jackson.annotation.JsonAutoDetect;  
import com.fasterxml.jackson.annotation.PropertyAccessor;  
import com.fasterxml.jackson.databind.ObjectMapper;  @Configuration  
public class RedisConfig {  @Beanpublic RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory factory) {RedisTemplate<Object, Object> template = new RedisTemplate<>();// 配置连接工厂template.setConnectionFactory(factory);//使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)Jackson2JsonRedisSerializer<Object> jsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);ObjectMapper om = new ObjectMapper();// 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和publicom.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);// 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常om.activateDefaultTyping( LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.WRAPPER_ARRAY);// 空字段不序列化om.setDefaultPropertyInclusion(JsonInclude.Include.NON_NULL);// 解决jackson2无法反序列化LocalDateTime的问题om.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);om.registerModule(new JavaTimeModule());jsonRedisSerializer.setObjectMapper(om);// 值采用json序列化template.setValueSerializer(jsonRedisSerializer);//使用StringRedisSerializer来序列化和反序列化redis的key值template.setKeySerializer(new StringRedisSerializer());//设置hash key 和value序列化模式template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(jsonRedisSerializer);template.afterPropertiesSet();return template;}
}

有关序列化知识,可以参考:序列化与消息转换器

七、测试

最后,可以在 Spring Boot 项目中编写测试用例或直接在 Controller 中使用 RedisService 来测试 Redis 的集成情况。

八、总结

Spring Boot 集成 Redis 非常简单,只需要添加依赖、配置 Redis 和使用 RedisTemplate 即可。通过自定义序列化器,可以更加灵活地控制数据的存储格式

九、Springboot 中 使用 Redis 缓存 Session 信息

待更新

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

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

相关文章

低调收藏,这份MobaXterm使用指南很全面

中午好&#xff0c;我的网工朋友。 MobaXterm&#xff0c;这个名字对于我们这些经常需要在Windows环境下与Linux服务器打交道的人来说&#xff0c;应该并不陌生。它不仅仅是一个SSH客户端&#xff0c;更是一个功能强大的终端工具箱&#xff0c;集成了X服务器和Unix命令集&…

hivesql如何在数据量超大时避免join操作

hivesql如何在数据量超大时避免join操作 当在hive中对超大的表进行查询时&#xff0c;在这种情况下不能进行mapjoin&#xff0c;也选择不进行skewjoin或是smbjoin 。此时&#xff0c;针对特定的应用场景&#xff0c;可以设计特殊的sql避免join操作。下面给出一个典型案例&…

个人租用国外服务器的全指南

在全球化的数字时代&#xff0c;无论是出于业务扩展、学术研究还是个人娱乐等目的&#xff0c;个人用户对国外服务器的需求日益增长。选择租用国外服务器&#xff0c;尤其是来自科技发达地区如美国硅谷的服务器&#xff0c;能够享受到诸多优势。接下来&#xff0c;我们将详细探…

醒图及国际版 v9.9.9/v3.9.0 解锁会员(让照片栩栩如生的神奇应用)

介绍 醒图App是一款专业的照片编辑工具&#xff0c;旨在帮助用户高效地处理和优化照片&#xff0c;使其更加引人注目。这款应用程序配备了多样化的功能&#xff0c;包括图像增强、滤镜应用以及色彩调整等&#xff0c;以满足各种编辑需求。其设计了一个直观的用户界面&#xff…

全球首例光伏电场网络攻击事件曝光

快速增长的光伏发电正面临日益严重的网络安全威胁。近日&#xff0c;日媒报道了首个针对光伏电场的网络攻击事件。 首例公开确认的光伏电网攻击 日本媒体《产经新闻》近日报道&#xff0c;黑客劫持了一个大型光伏电网中的800台远程监控设备(由工控电子制造商Contec生产的Solar…

ABS三星!IF:6.0+新刊,中科院2区SSCI,1个月左右见刊!OA无需版面费,领域权威期刊!

【欧亚科睿学术】 01 期刊基本概况 【期刊类型】管理类SSCI 【出版社】TAYLOR & FRANCIS出版社 【期刊概况】IF&#xff1a;6.0-7.0&#xff0c;JCR2区&#xff0c;中科院2区 【版面类型】正刊&#xff0c;仅10篇版面 【预警情况】2020-2024年无预警记录 【收录年份…

Linux下压缩、删除、移动、拷贝操作(命令行)

Linux下压缩、删除、移动、拷贝操作&#xff08;命令行&#xff09; 一、写作动机 由于经常使用Linux系统&#xff0c;有一些常用的操作&#xff0c;记录一下。 二、命令 压缩文件 zip file.zip file.txt压缩文件夹 zip -r file.zip file删除文件 rm -f file.txt删除文件…

详解 HTML5 服务器发送事件(Server-Sent Events)

HTML5 服务器发送事件&#xff08;server-sent event&#xff09;允许网页获得来自服务器的更新。 EventSource 是单向通信的&#xff08;是服务器向客户端的单向通信&#xff0c;客户端接收来自服务器的事件流&#xff09;、基于 HTTP 协议&#xff08;EventSource 是基于标准…

TalkingData数据统计

一、简介 TalkingData是一家提供移动应用数据统计和分析的公司&#xff0c;专注于移动应用数据的收集、分析和可视化。TalkingData通过收集应用程序的用户行为数据&#xff0c;如应用下载量、用户留存率、用户活跃度等&#xff0c;帮助开发者了解用户行为趋势、优化应用功能、…

word 全文中 英文字体 和 样式的字体 莫名奇妙地 被改成 “等线”

word全文中英文字体和样式的字体莫名奇妙地被改成“等线” sm word又抽风了&#xff0c;改完论文保存后打开突然发现全文字体都不对劲&#xff0c;吓得冷汗直冒&#xff1a;虽然我用git管理了论文版本&#xff0c;但是只有比较大的修改我才上传了&#xff0c;刚刚修了几个小时…

React-useState

useState基础使用 useState是一个React Hook&#xff08;函数&#xff09;&#xff0c;它允许我们向组件添加一个状态变量&#xff0c;从而控制影响组件的渲染结果 本质&#xff1a;和普通JS变量不同的是&#xff0c;状态变量一旦发生变化组件的视图UI也会跟着变化&#xff0…

【哈希】闭散列的线性探测和开散列的哈希桶解决哈希冲突(C++两种方法模拟实现哈希表)(2)

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; C进阶 &#x1f389;其它专栏&#xff1a; C初阶 | Linux | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解 哈希函数与哈希 之 哈希桶解决哈希冲突 的相关内容。 如果看到最后…

2024年5月份架构师考试真题完整版

截至2024-5-28 19:24:14已全部收录完成 共75到选择题&#xff0c;5道案例题&#xff0c;4道论文题。题目顺序不分先后。 全网最全的2024年5月份架构师考试真题回忆版&#xff0c;包含答案和解析。 群友 疯狂程序员 花落无声 半夏 鲁迅-三战老兵(预备役) 本次必成 锦鲤附体 2024…

超详细介绍基于微调 Faster R-CNN实现海上航拍图像中检测小物体-含源码与数据集免费下载

在航拍图像中检测小物体,尤其是对于海上救援等关键应用而言,是一项独特的挑战。及时检测水中的人可能意味着生死之间的差别。我们的研究重点是微调 Faster R-CNN(一种强大的两阶段物体检测器),以满足这一重要需求。 我们研究的核心是SeaDroneSee 数据集,这是一组重要的图…

618数码产品怎么选?四大必看推荐,自费无广测评

6.18盛宴即将开启&#xff0c;你是否已摩拳擦掌&#xff0c;准备在电商海洋中乘风破浪&#xff1f;然而&#xff0c;在繁多的商品和错综复杂的优惠面前&#xff0c;你是否感到些许迷茫&#xff1f;团团这位网购小能手&#xff0c;特地为大家梳理了一份精选购物清单。这些宝贝不…

github使用相关问题

建议 最好科学上网配置ssh key 可能错误 clone remote: Enumerating objects: 357, done. error: RPC failed; curl 18 transfer closed with outstanding read data remaining fatal: the remote end hung up unexpectedly fatal: early EOF fatal: index-pack failed 解…

sectigo企业通配符证书1590元13个月

通配符SSL证书可以同时保护多个域名站点&#xff0c;简化了用户管理SSL证书的流程&#xff0c;降低了管理成本&#xff0c;因此&#xff0c;不管是个人开发者还是企事业单位开发者都愿意尝试这款SSL证书产品。今天就随SSL盾小编了解Sectigo旗下的企业通配符SSL证书。 1.Sectig…

如何创建一个vue项目?详细教程,如何创建第一个vue项目?

已经安装node.js在自己找的到的地方新建一个文件夹用于存放项目&#xff0c;记住文件夹的存放路径&#xff0c;以我为例&#xff0c;我的文件夹路径为D:\tydic 打开cmd命令窗口&#xff0c;进入刚刚的新建文件夹 切换硬盘&#xff1a; D: 进入文件夹&#xff1a;cd tydic 使…

迈向F5G-A,开启全光万兆新时代——南通移动完成全市首个50G-PON技术验证

近日&#xff0c;南通移动在崇川区完成全市首个50G-PON万兆技术现网验证&#xff0c;标志着南通成为首批具备F5G-A(The 5th GenerationFixed Network-advanced)的万兆光网城市&#xff0c;使其成为网速最快、覆盖最全、时延最低的城市之一。 作为全光万兆的关键技术&#xff0c…

Django实现websocket

Django实现websocket WebSocket功能使用介绍安装配置WebSocket接口--消息接收者的实现scope通道层 channel layer部署Web客户端连接Mac客户端 WebSocket功能 WebSocket长连接一般用于实现实时功能&#xff0c;例如web端的消息通知、会话等场景。 使用 WebSocket 向 Django 项…