首页/新闻资讯/正文详情

Spring Boot如何集成Redis

发布时间:2026/9/26 2:45:53 来源:云帆数科 栏目:资讯中心
Spring Boot如何集成Redis
1.环境IDEA:2026.1JDK:17Redis:3.0.xmaven:3.6.3本文源代码在文章末尾。2.创建Spring Boot项目点击“文件”—“新建”—“项目”新建项目这里选择Spring Boot选一个位置创建的项目语言选“Java”类型选MavenJDK选17打包方式选jar配置选YAML然后点击下一步。这里Spring Boot选择3.x版本后面在Web里面选择“Spring Web”然后点击“创建”。然后等待一会项目会创建完。注意maven需要配置正确不然项目会创建失败3.引用Redis依赖、修改配置文件我们打开项目的pom.xml文件引入redis的相关依赖!-- SpringDataRedis--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!--连接池--dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependency这里给出pom.xml文件参考?xml version1.0 encodingUTF-8?projectxmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.5.13/versionrelativePath/!-- lookup parent from repository --/parentgroupIdcom.guo/groupIdartifactIdredis-demo/artifactIdversion0.0.1-SNAPSHOT/versionnameredis-demo/namedescriptionredis-demo/descriptionurl/licenseslicense//licensesdevelopersdeveloper//developersscmconnection/developerConnection/tag/url//scmpropertiesjava.version17/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!-- SpringDataRedis--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!--连接池--dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project引入依赖后点击刷新让我们的maven去更新依赖如果你不明白可以使用下面两种方式之一新手照着操作即可。如果上面的方式还是没有正常加载依赖那么可以打开控制台输入下面两个指令。mvn clean mvn compile如果还是不好用的话就用重启大法偶尔抽风是很正常的然后修改配置文件spring: application: name: redis-demo redis: host: localhost#连接地址port:6379#连接端口password:#密码未设置则为空database:0#数据库索引默认0lettuce:# 使用 Lettuce 客户端默认pool: max-active:8# 最大连接数max-idle:8# 最大空闲连接min-idle:0# 最小空闲连接max-wait: 1000ms# 最大等待时间注意配置文件中冒号后面有空格如果不确定可以先复制再修改。4.新增Redis配置类Redis配置类主要为了解决序列化乱码问题。序列化 把 Java 对象 → 打成 “快递包”存进 Redis反序列化 把 Redis 里的 “快递包” → 变回 Java 对象类名输入RedisConfig参考代码如下importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.data.redis.connection.RedisConnectionFactory;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;importorg.springframework.data.redis.serializer.RedisSerializer;ConfigurationpublicclassRedisConfig{//配置 RedisTemplate//RedisConnectionFactory 是Spring 中创建、管理 Redis 连接的工厂负责根据配置建立 Redis 连接读取配置文件BeanpublicRedisTemplateString,ObjectredisTemplate(RedisConnectionFactoryfactory){RedisTemplateString,ObjecttemplatenewRedisTemplate();//创建 RedisTemplate 对象操作 Redis 的核心工具template.setConnectionFactory(factory);//绑定 Redis 连接工厂让它能连上 Redis// 定义序列化工具RedisSerializerStringstringSerializerRedisSerializer.string();// 创建【JSON 序列化器】// 作用把 Java 对象转成 JSON 存进 Redis// 取出来又能自动转回对象GenericJackson2JsonRedisSerializerjsonSerializernewGenericJackson2JsonRedisSerializer();// key 序列化template.setKeySerializer(stringSerializer);//key 一律使用字符串序列化普通 Redis 键template.setHashKeySerializer(stringSerializer);//hash 类型的 key 也用字符串序列化// value 序列化template.setValueSerializer(jsonSerializer);//value 使用 JSON 序列化template.setHashValueSerializer(jsonSerializer);//hash 类型的 value 也用 JSON 序列化//让配置生效template.afterPropertiesSet();returntemplate;}}5.封装Redis工具类增删改查使用Redis的时候一般把Redis进行封装我们继续操作。右击项目选择“新建”—“软件包”包名为utils右击刚才创建的utils选择“新建”—“Java类”类名为RedisUtil参考代码如下importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.data.redis.core.RedisTemplate;importorg.springframework.stereotype.Component;importjava.util.Arrays;importjava.util.List;importjava.util.Map;importjava.util.Set;importjava.util.concurrent.TimeUnit;ComponentpublicclassRedisUtil{AutowiredprivateRedisTemplateString,ObjectredisTemplate;// 公共方法 /** * 指定缓存过期时间 * param key 键 * param time 时间秒 */publicbooleanexpire(Stringkey,longtime){try{if(time0){redisTemplate.expire(key,time,TimeUnit.SECONDS);}returntrue;}catch(Exceptione){e.printStackTrace();returnfalse;}}/** * 根据key获取过期时间 */publiclonggetExpire(Stringkey){returnredisTemplate.getExpire(key,TimeUnit.SECONDS);}/** * 判断key是否存在 */publicbooleanhasKey(Stringkey){try{returnredisTemplate.hasKey(key);}catch(Exceptione){e.printStackTrace();returnfalse;}}/** * 删除缓存 */publicvoiddel(String...key){if(key!nullkey.length0){if(key.length1){redisTemplate.delete(key[0]);}else{redisTemplate.delete(Arrays.asList(key));}}}// String 类型 /** * 获取缓存 */publicObjectget(Stringkey){returnkeynull?null:redisTemplate.opsForValue().get(key);}/** * 设置缓存 */publicbooleanset(Stringkey,Objectvalue){try{redisTemplate.opsForValue().set(key,value);returntrue;}catch(Exceptione){e.printStackTrace();returnfalse;}}/** * 设置缓存并设置时间 */publicbooleanset(Stringkey,Objectvalue,longtime){try{if(time0){redisTemplate.opsForValue().set(key,value,time,TimeUnit.SECONDS);}else{set(key,value);}returntrue;}catch(Exceptione){e.printStackTrace();returnfalse;}}/** * 递增 */publiclongincr(Stringkey,longdelta){if(delta0){thrownewRuntimeException(递增因子必须大于0);}returnredisTemplate.opsForValue().increment(key,delta);}/** * 递减 */publiclongdecr(Stringkey,longdelta){if(delta0){thrownewRuntimeException(递减因子必须大于0);}returnredisTemplate.opsForValue().increment(key,-delta);}// Map 类型 publicObjecthget(Stringkey,Stringitem){returnredisTemplate.opsForHash().get(key,item);}publicMapObject,Objecthmget(Stringkey){returnredisTemplate.opsForHash().entries(key);}publicbooleanhmset(Stringkey,MapString,Objectmap){try{redisTemplate.opsForHash().putAll(key,map);returntrue;}catch(Exceptione){e.printStackTrace();returnfalse;}}// Set 类型 publicSetObjectsGet(Stringkey){try{returnredisTemplate.opsForSet().members(key);}catch(Exceptione){e.printStackTrace();returnnull;}}// List 类型 publicListObjectlGet(Stringkey,longstart,longend){try{returnredisTemplate.opsForList().range(key,start,end);}catch(Exceptione){e.printStackTrace();returnnull;}}}6.修改启动类、增加测试代码要想正常使用上面的Redis还要修改一下启动类我们打开启动类新增一行注解ComponentScan(basePackages “com.guo”)这里需要注意的是包名不要写错了。然后开始修改测试类代码。我们在测试类里面新建很多测试方法先找到测试类的位置。然后新增测试方法:importcom.guo.utils.RedisUtil;importjakarta.annotation.Resource;importorg.junit.jupiter.api.Test;importorg.springframework.boot.test.context.SpringBootTest;SpringBootTestclassRedisDemoApplicationTests{ResourceprivateRedisUtilredisUtil;TestvoidcontextLoads(){}//测试新增Testpublicvoidset(){redisUtil.set(name,张三,60);// 60秒过期System.out.println(设置成功);}//测试查询Testpublicvoidget(){ObjectobjectredisUtil.get(name);System.out.println(查询结果object);}//测试删除Testpublicvoiddel(){redisUtil.del(name);System.out.println(删除成功);}//测试过期时间Testpublicvoidexpire(){redisUtil.expire(name,15);System.out.println(设置成功);}//测试是否存在TestpublicvoidhasKey(){booleanhasKeyredisUtil.hasKey(name);System.out.println(是否存在hasKey);}}7.代码测试先本地运行Redis相关参数要和上面的相符合。1测试新增、存在、查询功能过程1先运行存在功能证明不存在再运行新增代码最后运行查询代码。下面证明不存在”name“这个key然后执行插入操作下面的提示插入成功。下面开始执行查询操作下面是查询结果注意代码中设置了60秒过期所以要在60秒内查询才有效不然会查不到4测试删除过程新增后运行删除操作再查询先执行set方法然后执行查询操作就会发现查不到了。8.结语本文简单实现了Spring Boot使用Spring Data Redis整合Redis操作的例子上面代码的问题是key和value都是写死的实际开发中这都是传入的参数后面应该向此方向改进。本文源代码下载:(1) 百度网盘通过网盘分享的文件redis-demo.zip链接: https://pan.baidu.com/s/1izToPZ9bhWLOSkCoNO6xOg?pwdxvs2 提取码: xvs22夸克网盘我用夸克网盘给你分享了「redis-demo.zip」点击链接或复制整段内容打开「夸克APP」即可获取。/76d53b5gSv链接https://pan.quark.cn/s/855d21c7b5b2?pwdqhg3提取码qhg3

相关推荐

WorkBuddy接入腾讯乐享:企业知识库AI问答落地实践
WorkBuddy接入腾讯乐享:企业知识库AI问答落地实践

很多公司都有这么个尴尬事:腾讯乐享上了好几年,文档存了一堆,可真要用的时候,谁也找不到。新人入职问个报销流程,先在乐享里翻半天,翻不到再问同事,同事发来一个链接还是去年的旧版。我去年用 W… · 2026/9/26 2:45:41

程序员高效开发必备的六大技术站点实战指南
程序员高效开发必备的六大技术站点实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:45:35

免费PPT模板资源实测:靠谱网站推荐与不廉价使用技巧
免费PPT模板资源实测:靠谱网站推荐与不廉价使用技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:45:35

高吞吐+免配置!腾讯云轻量 Hermes Agent 部署指南:TaoToken 统一 Key 接入 QQ 机器人
高吞吐+免配置!腾讯云轻量 Hermes Agent 部署指南:TaoToken 统一 Key 接入 QQ 机器人

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:26:19

从个体智能到系统智能:Graph Engineering多智能体协作架构实战
从个体智能到系统智能:Graph Engineering多智能体协作架构实战

最近我看“智源TALK”第389期时,标题第一眼就抓住了我:从个体智能到系统智能。这句话其实戳中了过去半年多智能体领域最核心的痛点。单Agent大家已经玩得很溜,指令遵循、工具调用、代码生成都能做到七八十分,但一旦把三五个Agent串… · 2026/9/26 3:26:19

AI Infra实战:vLLM、SGLang推理引擎与PyTorch、Agent部署优化指南
AI Infra实战:vLLM、SGLang推理引擎与PyTorch、Agent部署优化指南

1. AI infra到底在解决什么问题说实话,这两年AI行业最不缺的就是模型,缺的是能把模型老老实实跑起来、跑得稳的人。你去看各大厂的招聘岗位,AI infra方向的薪资一路走高,但真正懂行的人依然稀缺。所谓AI infra,落到日常… · 2026/9/26 3:26:19

0.024 美元 vs 0.09 美元:画质持平需打折
0.024 美元 vs 0.09 美元:画质持平需打折

一、引言腾讯说和 Seedream 在同一水平,价格只有它的四分之一。9 月 22 日,腾讯混元发布了 Hy Image3.5 preview。腾讯云 API 上一张 2K 图收 0.15 元。💰让我多看两眼的不是价格。发给媒体的通稿写着它「与 Seedream 5.0 pro 持平」。同一份… · 2026/9/26 3:26:07

温控系统制冷方案选型:TEC与压缩机核心对比指南
温控系统制冷方案选型:TEC与压缩机核心对比指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:26:07

2026 OpenClaw AI推荐:商业发行智能体平台对比评估与落地实施参考要点(TaoToken 统一接入版)
2026 OpenClaw AI推荐:商业发行智能体平台对比评估与落地实施参考要点(TaoToken 统一接入版)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 3:26:07

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码