0

0

使用 Spring Boot 的 @Cacheable 注解与 Jedis 集成

霞舞

霞舞

发布时间:2025-08-01 16:02:15

|

736人浏览过

|

来源于php中文网

原创

使用 spring boot 的 @cacheable 注解与 jedis 集成

本文介绍了如何在已使用 Jedis 作为快速存储的 Spring Boot 应用中,配置并使用 Spring 的 @Cacheable 注解。通过配置 RedisCacheManager 和 JedisConnectionFactory,可以利用 Jedis 实现自定义缓存,并与 @Cacheable 注解无缝集成。

在 Spring Boot 项目中,我们经常使用 @Cacheable 注解来提升应用性能,减少对数据库或其他服务的重复调用。 然而,当项目中已经配置了 Jedis 作为快速存储时,如何将 @Cacheable 注解与 Jedis 集成,实现自定义的缓存管理,就成为一个需要解决的问题。

虽然 Spring 框架并没有直接提供 JedisCacheManager,但我们可以通过配置 RedisCacheManager 和 JedisConnectionFactory 来实现类似的功能。 实际上,RedisCacheManager 可以与任何实现了 RedisConnectionFactory 接口的连接工厂一起使用,而 JedisConnectionFactory 正是其中一种实现。

配置 JedisConnectionFactory

首先,我们需要配置 JedisConnectionFactory,它负责建立与 Jedis 服务器的连接。 以下是一个配置 JedisConnectionFactory 的示例代码:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;

@Configuration
public class RedisConfig {

    @Bean
    public JedisConnectionFactory jedisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration("your_redis_host", 6379); // 替换为你的 Redis 主机和端口

        JedisClientConfiguration jedisClientConfiguration = JedisClientConfiguration.builder().usePooling().build(); // 使用连接池
        JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(redisStandaloneConfiguration, jedisClientConfiguration);
        return jedisConnectionFactory;
    }

    @Bean
    public RedisTemplate redisTemplate() {
        RedisTemplate template = new RedisTemplate<>();
        template.setConnectionFactory(jedisConnectionFactory());
        return template;
    }
}

在这个例子中:

  • RedisStandaloneConfiguration 用于配置连接到单个 Redis 节点的信息,例如主机名和端口。 请根据你的实际 Redis 配置进行修改。
  • JedisClientConfiguration 用于配置 Jedis 客户端的行为,例如是否使用连接池。 使用连接池可以提高性能。
  • JedisConnectionFactory 使用上述配置创建 Jedis 连接工厂。
  • RedisTemplate 需要设置连接工厂为上面创建的jedisConnectionFactory

配置 RedisCacheManager

接下来,我们需要配置 RedisCacheManager,它负责管理缓存。 以下是一个配置 RedisCacheManager 的示例代码:

Snowy(SnowyAdmin)快速开发平台3.5.1
Snowy(SnowyAdmin)快速开发平台3.5.1

Snowy(SnowyAdmin)是国内首个国密前后端分离快速开发平台,集成国密加解密插件, 软件层面完全符合等保测评要求,同时实现国产化机型、中间件、数据库适配,是您的不二之选! 技术框架与密码结合,让更多的人认识密码,使用密码;更是让前后分离“密”不可分。采用SpringBoot+MybatisPlus+AntDesignVue+Vite 等更多组件及前沿技术开发,注释丰富,代码简洁,开箱即用

下载
import org.springframework.cache.CacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;

import java.time.Duration;

@Configuration
public class CacheConfig {

    @Bean
    public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
        RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(Duration.ofMinutes(10)) // 设置缓存过期时间为 10 分钟
                .disableCachingNullValues() // 禁止缓存 null 值
                .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())); // 使用 JSON 序列化

        return RedisCacheManager.builder(redisConnectionFactory)
                .cacheDefaults(cacheConfiguration)
                .build();
    }
}

在这个例子中:

  • RedisCacheConfiguration 用于配置缓存的行为,例如过期时间、是否缓存 null 值以及序列化方式。
  • RedisCacheManager 使用上述配置和 RedisConnectionFactory 创建缓存管理器。

使用 @Cacheable 注解

完成上述配置后,我们就可以在 Spring Boot 应用中使用 @Cacheable 注解了。 例如:

import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;

@Service
public class MyService {

    @Cacheable(value = "myCache", key = "#id")
    public String getData(String id) {
        // 模拟从数据库或其他服务获取数据
        System.out.println("Fetching data from source for id: " + id);
        return "Data for id: " + id;
    }
}

在这个例子中:

  • @Cacheable(value = "myCache", key = "#id") 表示将 getData 方法的返回值缓存到名为 "myCache" 的缓存中,缓存的 key 是方法参数 id。

注意事项

  • 确保你的 Spring Boot 项目已经引入了必要的依赖,包括 spring-boot-starter-data-redis 和 jedis。
  • 根据你的实际 Redis 配置,修改 RedisStandaloneConfiguration 中的主机名和端口。
  • 根据你的需求,调整 RedisCacheConfiguration 中的缓存过期时间和其他配置。
  • 建议使用连接池来提高 Jedis 的性能。
  • 考虑使用合适的序列化方式,例如 JSON 序列化,以便缓存复杂对象。

总结

通过配置 RedisCacheManager 和 JedisConnectionFactory,我们可以轻松地将 Spring 的 @Cacheable 注解与 Jedis 集成,实现自定义的缓存管理。 这种方法不仅可以利用 Jedis 的高性能,还可以充分利用 Spring 框架的缓存抽象,提高应用性能。

相关专题

更多
spring框架介绍
spring框架介绍

本专题整合了spring框架相关内容,想了解更多详细内容,请阅读专题下面的文章。

98

2025.08.06

spring boot框架优点
spring boot框架优点

spring boot框架的优点有简化配置、快速开发、内嵌服务器、微服务支持、自动化测试和生态系统支持。本专题为大家提供spring boot相关的文章、下载、课程内容,供大家免费下载体验。

135

2023.09.05

spring框架有哪些
spring框架有哪些

spring框架有Spring Core、Spring MVC、Spring Data、Spring Security、Spring AOP和Spring Boot。详细介绍:1、Spring Core,通过将对象的创建和依赖关系的管理交给容器来实现,从而降低了组件之间的耦合度;2、Spring MVC,提供基于模型-视图-控制器的架构,用于开发灵活和可扩展的Web应用程序等。

384

2023.10.12

Java Spring Boot开发
Java Spring Boot开发

本专题围绕 Java 主流开发框架 Spring Boot 展开,系统讲解依赖注入、配置管理、数据访问、RESTful API、微服务架构与安全认证等核心知识,并通过电商平台、博客系统与企业管理系统等项目实战,帮助学员掌握使用 Spring Boot 快速开发高效、稳定的企业级应用。

61

2025.08.19

Java Spring Boot 4更新教程_Java Spring Boot 4有哪些新特性
Java Spring Boot 4更新教程_Java Spring Boot 4有哪些新特性

Spring Boot 是一个基于 Spring 框架的 Java 开发框架,它通过 约定优于配置的原则,大幅简化了 Spring 应用的初始搭建、配置和开发过程,让开发者可以快速构建独立的、生产级别的 Spring 应用,无需繁琐的样板配置,通常集成嵌入式服务器(如 Tomcat),提供“开箱即用”的体验,是构建微服务和 Web 应用的流行工具。

8

2025.12.22

Java Spring Boot 微服务实战
Java Spring Boot 微服务实战

本专题深入讲解 Java Spring Boot 在微服务架构中的应用,内容涵盖服务注册与发现、REST API开发、配置中心、负载均衡、熔断与限流、日志与监控。通过实际项目案例(如电商订单系统),帮助开发者掌握 从单体应用迁移到高可用微服务系统的完整流程与实战能力。

101

2025.12.24

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

402

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

528

2023.08.23

vlookup函数使用大全
vlookup函数使用大全

本专题整合了vlookup函数相关 教程,阅读专题下面的文章了解更多详细内容。

28

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

Redis+MySQL数据库面试教程
Redis+MySQL数据库面试教程

共72课时 | 6.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号