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

使用 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;@Configurationpublic 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 的示例代码:

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;@Configurationpublic 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;@Servicepublic 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 Boot 的 @Cacheable 注解与 Jedis 集成的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/119050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
《战地6》测试前公布多项调整 兵种系统迎来颠覆变革
上一篇 2025年11月25日 15:06:39
交管12123取消考试预约怎么办理_交管12123取消考试预约操作指南
下一篇 2025年11月25日 15:08:41

相关推荐

发表回复

登录后才能评论
关注微信