• 使用 Redis 作为缓存的 Spring Boot 应用


    使用 Redis 作为缓存的 Spring Boot 应用

    Redis(Remote Dictionary Server)是一个开源的内存数据存储系统,它可以用作数据库、缓存和消息代理。Spring Boot提供了对Redis的无缝集成,允许你在应用程序中使用Redis作为缓存。本文将介绍如何在Spring Boot应用中使用Redis作为缓存,并提供示例代码来帮助你入门。

    在这里插入图片描述

    准备工作

    在开始之前,确保你已经安装了以下软件:

    1. Java Development Kit (JDK)
    2. Spring Boot
    3. Redis(你可以从 Redis官方网站 下载并安装Redis)

    如果你还没有安装这些软件,可以按照它们的官方安装指南进行安装。

    创建Spring Boot项目

    首先,我们需要创建一个Spring Boot项目。你可以使用Spring Initializer来创建一个基本的Spring Boot项目,也可以使用IDE(如IntelliJ IDEA或Eclipse)来创建。

    使用Spring Initializer创建项目

    访问 Spring Initializer 网站,在这个网站上你可以选择项目的依赖和设置。对于本文,我们将选择以下依赖:

    • Spring Web
    • Spring Data Redis
    • MySQL Driver(如果你的应用需要数据库)

    点击"Generate"按钮,下载生成的项目压缩包并解压它。

    使用IDE创建项目

    如果你使用IDE来创建项目,可以按照以下步骤:

    1. 打开你的IDE,选择创建新的Spring Boot项目。
    2. 选择项目的名称和位置。
    3. 在项目设置中选择Spring Web和Spring Data Redis等依赖。
    4. 完成项目创建。

    配置Redis连接

    在Spring Boot项目中,配置Redis连接通常在application.propertiesapplication.yml文件中完成。在项目的src/main/resources目录下找到这个文件并添加以下配置:

    # Redis连接配置
    spring.redis.host=localhost
    spring.redis.port=6379
    
    • 1
    • 2
    • 3

    你可以根据你的Redis实例的主机和端口进行配置。如果Redis有密码访问,你需要添加以下配置:

    spring.redis.password=your_password
    
    • 1

    请替换上述配置中的your_password为你的Redis密码。

    创建缓存配置

    接下来,我们将创建一个缓存配置类,以配置Spring Boot应用程序的缓存策略。创建一个名为CacheConfig的Java类:

    package com.example.demo.config;
    
    import org.springframework.cache.annotation.EnableCaching;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    @EnableCaching
    public class CacheConfig {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    通过@EnableCaching注解,我们启用了Spring Boot的缓存支持。

    创建Service类

    现在,我们将创建一个Service类,该类将使用缓存来存储和获取数据。假设我们要创建一个服务来获取用户信息,可以创建一个名为UserService的Service类:

    package com.example.demo.service;
    
    import com.example.demo.model.User;
    import org.springframework.cache.annotation.CacheEvict;
    import org.springframework.cache.annotation.Cacheable;
    import org.springframework.stereotype.Service;
    
    @Service
    public class UserService {
        // 模拟从数据库获取用户信息
        @Cacheable(value = "users", key = "#id")
        public User getUserById(Long id) {
            // 模拟从数据库中获取用户信息
            return new User(id, "John", "john@example.com");
        }
    
        // 模拟更新用户信息
        @CacheEvict(value = "users", key = "#user.id")
        public User updateUser(User user) {
            // 模拟更新数据库中的用户信息
            return user;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在上述示例中,我们使用了@Cacheable注解来指示Spring Boot将结果存储在名为"users"的缓存中,并使用#id作为缓存键。我们还使用了@CacheEvict注解来指示Spring Boot在更新用户信息时清除缓存。

    创建Controller类

    现在,我们将创建一个Controller类来处理HTTP请求并使用缓存的数据。创建一个名为UserController的Controller类:

    package com.example.demo.controller;
    
    import com.example.demo.model.User;
    import com.example.demo.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.*;
    
    @RestController
    @RequestMapping("/users")
    public class UserController {
        private final UserService userService;
    
        @Autowired
        public UserController(UserService userService) {
            this.userService = userService;
        }
    
        @GetMapping("/{id}")
        public User getUserById(@PathVariable Long id) {
            return userService.getUserById(id);
        }
    
        @PutMapping("/{id}")
        public User updateUser(@PathVariable Long id, @RequestBody User user) {
            user.setId(id);
            return userService.updateUser(user);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    在这个Controller类中,我们使用@GetMapping注解和@PutMapping注解来处理HTTP请求,并调用UserService来获取和更新用户信息。

    运行项目

    现在,你已经完成了Spring Boot的配置,创建了缓存配置类、Service类和Controller类。接下来,你可以运行你的Spring Boot应用程序。

    测试缓存

    使用浏览器或API测试工具访问应用程序的接口(默认地址为 http://localhost:8080/users/{id}),你将看到应用程序返回的用户信息。如果多次访问相同的用户ID,你会发现数据是从缓存中获取的,而不是每次都从数据库中获取。

    结论

    本文介绍了如何在Spring Boot应用中使用Redis作为缓存。通过配置Redis连接、创建缓存配置类、Service类和Controller类,你可以轻松地使用缓存来提高应用程序的性能和响应速度。

    希望本文对你有所帮助,祝你在使用Spring Boot和Redis构建高性能应用程序时取得成功!如果你需要进一步的信息或示例代码,请随时提问。

  • 相关阅读:
    多主复制下处理写冲突(1)-同步与异步冲突检测及避免冲突
    Linux知识点 -- 高级IO(一)
    深度剖析Linux磁盘分区 | LVM逻辑卷 | VDO卷 | AutoFS存储自动挂载
    springboot导入excel(POI)
    搭建vue3项目并git管理
    m基于遗传优化的不同等级电动汽车充电站的选址方案matlab仿真
    Mybatis基础支持层-反射模块:ObjectFactory/Property工具类
    HUAWEI华为笔记本MateBook 14 I5 独显(KLV-W19)原装出厂Windows10系统1809
    【强化学习论文合集】IJCAI-2022 强化学习论文 | 2022年合集(五)
    【软件STM32cubeIDE下STM32H743xx使用:看门狗iwdg+复位标志位-基础样例】
  • 原文地址:https://blog.csdn.net/yujun2023/article/details/133244089