前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >重学SpringBoot3-集成Redis(一)之基本使用

重学SpringBoot3-集成Redis(一)之基本使用

作者头像
CoderJia
发布于 2024-10-18 01:15:02
发布于 2024-10-18 01:15:02
26600
代码可运行
举报
运行总次数:0
代码可运行

随着 Spring Boot 3 的发布,开发者可以享受更多的功能提升和性能优化。在现代开发中,Redis 作为高性能的缓存数据库,被广泛应用于提高系统的响应速度和减少数据库的压力。本文将介绍如何通过 Spring Boot 3 来整合 Redis,实现缓存和存储功能。

1. 项目初始化

可以通过 Spring Initializr 创建一个新的 Spring Boot 项目,选择 Spring Boot 3,并设置项目 JDK 为 Java 17。需要添加以下依赖:

  • Spring Web:用于构建 REST API
  • Spring Data Redis:用于 Redis 数据库的操作。
  • Lettuce:Redis 客户端,Spring Boot 默认支持。
  • Spring Boot DevTools(可选):方便开发时进行热部署。

选择好依赖后,点击 "Generate" 下载项目模板。

Spring Initializr创建项目
Spring Initializr创建项目

2. 配置 Redis

首先,需要在本地或远程部署 Redis 服务器。如果使用的是 Docker,可以用以下命令快速启动 Redis,如果是 Redis 集群请参考Docker搭建Redis集群模式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --name redis -p 6379:6379 -d redis

项目创建后,打开 application.yml 文件,如果是单机版 Redis 服务,添加如下 Redis 配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  data:
    redis:
      host: localhost
      port: 6379            # Redis 端口
      password:             # 如果有密码可以在这里配置
      lettuce:
        pool:
          max-active: 100    # 最大并发连接数
          max-idle: 50       # 最大空闲连接数
          min-idle: 10       # 最小空闲连接数

如果是集群版 Redis 服务,修改为如下 Redis 配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
spring:
  data:
    redis:
      cluster:
        nodes:
          - 127.0.0.1:6379
          - 127.0.0.2:6379
          - 127.0.0.3:6379
      password:             # 如果有密码可以在这里配置
      lettuce:
        pool:
          max-active: 100    # 最大并发连接数
          max-idle: 50       # 最大空闲连接数
          min-idle: 10       # 最小空闲连接数

3. 配置 Redis 序列化

Spring Boot 默认使用 JdkSerializationRedisSerializer 进行序列化,而我们通常更倾向于使用 StringRedisSerializerJackson2JsonRedisSerializer 进行更高效的序列化操作,尤其是在处理 JSON 数据时。

我们可以通过配置 RedisTemplate 来使用自定义的序列化器:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.coderjia.boot310redis.config;

import com.fasterxml.jackson.databind.ObjectMapper;
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;

/**
 * @author CoderJia
 * @create 2024/10/4 下午 12:43
 * @Description
 **/
@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory);

        // 使用String序列化器序列化Key
        template.setKeySerializer(new StringRedisSerializer());

        // 使用Jackson2JsonRedisSerializer序列化Value
        ObjectMapper objectMapper = new ObjectMapper();
        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(objectMapper,Object.class);
        template.setValueSerializer(serializer);

        return template;
    }
}

4. 操作 Redis 工具类

接下来,我们可以创建一个简单的工具类来操作 Redis。我们将通过 RedisTemplate 对象进行数据的存取操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.coderjia.boot310redis.utils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.concurrent.TimeUnit;

/**
 * @author CoderJia
 * @create 2024/10/4 下午 12:48
 * @Description
 **/
@Service
public class RedisUtils {

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    // 保存数据
    public void save(String key, Object value) {
        redisTemplate.opsForValue().set(key, value, 10, TimeUnit.MINUTES);  // 设置数据的有效期为10分钟
    }

    // 获取数据
    public Object get(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    // 删除数据
    public void delete(String key) {
        redisTemplate.delete(key);
    }
}

5. 编写 REST 控制器

为了展示如何通过 REST API 来操作 Redis,我们可以创建一个简单的控制器,通过 GET 和 POST 请求来存取 Redis 中的数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.coderjia.boot310redis.demos.web;

import com.coderjia.boot310redis.utils.RedisUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author CoderJia
 */
@RestController
@RequestMapping("/api/redis")
public class BasicController {

    @Autowired
    private RedisUtils redisUtils;

    // 保存数据
    @PostMapping("/save")
    public String save(@RequestParam("key") String key, @RequestParam("value") String value) {
        redisUtils.save(key, value);
        return "Data saved successfully!";
    }

    // 获取数据
    @GetMapping("/get")
    public Object get(@RequestParam("key") String key) {
        Object value = redisUtils.get(key);
        return value != null ? value : "Key not found";
    }

    // 删除数据
    @DeleteMapping("/delete")
    public String delete(@RequestParam("key") String key) {
        redisUtils.delete(key);
        return "Data deleted successfully!";
    }
}

6. 测试 API

启动 Spring Boot 应用程序,使用 curl 或 Postman 测试 API:

保存数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -X POST "http://localhost:8080/api/redis/save?key=testKey&value=helloRedis"
保存数据
保存数据

获取数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl "http://localhost:8080/api/redis/get?key=testKey"
获取数据
获取数据

删除数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -X DELETE "http://localhost:8080/api/redis/delete?key=testKey"
删除数据
删除数据

7. 总结

通过本文,相信你已经学会了如何在 Spring Boot 3Java 17 中整合 Redis,并实现基本的存取操作以及缓存功能。使用 Redis 可以大大提升应用的响应速度和性能,尤其在高并发的场景中,使用 Redis 作为缓存是一个非常有效的优化手段。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
重学SpringBoot3-集成Redis(六)之消息队列
Redis 不仅是一个高效的缓存解决方案,也具备强大的消息队列功能。通过 Redis 的 发布/订阅(Pub/Sub) 机制,开发者可以轻松实现服务之间的通信和消息传递功能,而无需引入专门的消息队列工具。这篇文章将介绍如何通过 Spring Boot 3 和 Redis 实现消息队列的发布与订阅功能。
CoderJia
2024/10/18
3510
重学SpringBoot3-集成Redis(六)之消息队列
【详解】SpringBoot2.0使用Redis
随着微服务架构的流行,分布式缓存成为提高系统性能和响应速度的关键技术之一。Redis作为一款高性能的键值存储系统,在缓存、消息队列、会话存储等场景中有着广泛的应用。本文将介绍如何在Spring Boot 2.0项目中集成并使用Redis。
大盘鸡拌面
2025/01/21
1340
SpringBoot系列-- 集成 Redis 缓存(实战)
通过控制台输出信息我们可以知道,这次执行了数据库查询,并开启了Redis缓存查询结果。接下来我们再次查询user表中id=24的数据,观察控制台,如下:
田维常
2020/02/13
2.1K0
SpringBoot系列-- 集成 Redis 缓存(实战)
springboot 整合redis 操作
六月的雨在Tencent
2024/03/28
1460
springboot 整合redis 操作
springboot整合redis进行缓存的使用
看过我的文章的都应该有所了解如何使用docker方式进行redis环境的搭建过程,想要了解的可以看下历史文章。今天我们想要分享的就是如何使用redis进行缓存的使用。
码农王同学
2019/11/28
5040
springboot整合redis进行缓存的使用
springboot2.5.0 整合 redis 配置详解
​ 1. pom添加依赖 <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2. application.properties 配置文件 #===========Redis配置=========== # Redis数据库索引(默认为0) spring.re
FHAdmin
2021/06/02
6180
【详解】Spring整合Redis
在现代Web应用开发中,缓存技术是提高应用性能的关键因素之一。Redis作为一个高性能的键值存储系统,被广泛应用于各种场景中,如数据缓存、消息队列等。本文将介绍如何在Spring框架中整合Redis,实现数据的高效读取和存储。
大盘鸡拌面
2025/01/04
840
Spring Boot整合 NoSQL 数据库 Redis
在日常的开发中,除了使用Spring Boot这个企业级快速构建项目的框架之外,随着业务数据量的大幅度增加,对元数据库造成的压力成倍剧增。在此背景下,Redis这个NoSQL数据库已然整个项目架构中的不可或缺的一部分,懂得如何Spring Boot整合 Redis,是当今开发人员必备的一项技能,接下来对整合步骤进行详细说明。
百思不得小赵
2022/12/01
4520
Spring Boot整合 NoSQL 数据库 Redis
springboot使用redis缓存开发模板
最近项目业务中接受秒级实时数据时,要求每次更新接受时间,和超过10分钟没有接受到数据的设备,要停机
零式的天空
2022/03/25
5120
springboot使用redis缓存开发模板
Spring Boot整合Redis
 Spring对Redis的支持是通过Spring Data Redis来实现的。Spring Data Redis提供了RedisTemplate和StringRedisTemplate两个模板来进行数据操作,其中StringRedisTemplate只针对键值都是字符串类型的数据进行操作。  RedisTemplate和StringRedisTemplate模板提供的主要数据访问方法如下表:
别团等shy哥发育
2023/02/25
6800
Spring Boot整合Redis
当SpringBoot引用Redis依赖但没有配置Redis信息时
虽然引用了这个公共模块,但是没有配置相对应的**Redis**信息,在项目启动后会出现异常报错
半月无霜
2024/05/17
5820
当SpringBoot引用Redis依赖但没有配置Redis信息时
Spring Boot---(6)SpringBoot整合Redis
1.引入依赖 <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>1.5.6.RELEASE</version> </dependency> 2.配置文件 # redis # Redis数据库索引(默认为0) spring.redis.databas
IT云清
2019/01/22
4980
Sprint Boot 集成 Redis  介绍及开发
Redis是一个内存数据存储,可以用作用作数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,日志,带有半径查询和流的地理空间索引。Redis具有内置的复制,Lua脚本,LRU逐出,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
Freedom123
2024/03/29
1260
2 Springboot中使用redis,配置redis的key value生成策略
上一篇里讲过了redis在spring boot中的简单使用,对于单个对象的增删改查的默认操作。
天涯泪小武
2019/01/17
4K2
Spring Boot集成Redis
“ 在昨天我们讲解了如何在Linux上部署Redis,那么今天我们来看一看Spring Boot如何集成Redis。”
每天学Java
2020/06/01
1.4K0
Spring Boot集成Redis
Spring Boot 整合 Redis
因为首页接口对应获取的首页数据变化不大,但访问量较大,所以就有必要将首页接口数据缓存到redis缓存中,减少数据库压力和提高访问速度
FHAdmin
2022/03/03
1K0
SpringBoot集成redis「建议收藏」
今天,日月在这里教大家如何使用springBoot集成redis,说实话比较简单,网上也有大把的教程。先套用一下网上的简介。 定义
全栈程序员站长
2022/07/04
1.3K0
SpringBoot集成redis「建议收藏」
SpringBoot整合Redis
SpringBoot 操作数据:spring-data jpa jdbc mongodb redis SpringData 也是和 SpringBoot 齐名的项目
后端码匠
2021/01/20
7110
【SpringBoot】34、SpringBoot整合Redis实现序列化存储Java对象
前面我们已经介绍过【SpringBoot】十七、SpringBoot 中整合 Redis,我们可以看出,在 SpringBoot 对 Redis 做了一系列的自动装配,使用还是非常方便的
全栈程序员站长
2022/06/25
1K0
【SpringBoot】34、SpringBoot整合Redis实现序列化存储Java对象
java进阶|Springboot整合Redis+Aop+自定义注解实现数据埋点操作
这里就把需要的jar信息的pom文件信息粘贴出来了,主要是为了日后方便,里面主要用了web,redis操作需要的jar包信息以及aop需要的jar包依赖信息,到这里需要的jar包信息就结束了。
码农王同学
2020/04/27
1.2K0
推荐阅读
相关推荐
重学SpringBoot3-集成Redis(六)之消息队列
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验