news 2026/5/12 12:06:01

HoRain云--SpringCache整合Redis缓存最佳实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HoRain云--SpringCache整合Redis缓存最佳实践

🎬 HoRain 云小助手:个人主页

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

目录

⛳️ 推荐

Spring Cache与Redis结合基本使用指南

1. 添加依赖

2. 配置Redis连接

3. 启用缓存

4. 使用缓存注解

@Cacheable - 缓存读取

@CachePut - 缓存更新

@CacheEvict - 缓存删除

5. 自定义缓存配置(JSON序列化)

6. 实际使用示例

7. 缓存操作说明

8. 最佳实践建议


Spring Cache与Redis结合基本使用指南

根据知识库信息,我为您整理了Spring Cache与Redis结合的基本使用方法:

1. 添加依赖

pom.xml中添加以下依赖:

<!-- Redis依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- Spring Cache依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency>

2. 配置Redis连接

application.properties中配置:

spring.redis.host=localhost spring.redis.port=6379 spring.redis.password=yourpassword

或在application.yml中配置:

spring: redis: host: 192.168.1.100 port: 6379 password: 密码 database: 0 timeout: 10000ms lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: -1ms

3. 启用缓存

在主配置类上添加@EnableCaching注解:

@SpringBootApplication @EnableCaching public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

4. 使用缓存注解

@Cacheable - 缓存读取

@Service public class ProductService { @Cacheable(value = "products", key = "#id") public Product getProductById(Long id) { System.out.println("Fetching product from the database for id: " + id); return new Product(id, "Product " + id, 100.0); } }

@CachePut - 缓存更新

@CachePut(value = "products", key = "#product.id") public Product updateProduct(Product product) { // 更新产品信息 return product; }

@CacheEvict - 缓存删除

@CacheEvict(value = "products", key = "#id") public void deleteProduct(Long id) { // 删除产品 }

5. 自定义缓存配置(JSON序列化)

默认情况下,Redis存储的是Java序列化字节流,建议配置为JSON格式:

@Configuration @EnableCaching public class RedisCacheConfig { @Bean public CacheManager cacheManager(RedisConnectionFactory factory) { RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() // 设置key为String序列化 .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer())) // 设置value为JSON序列化 .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())) // 不缓存null值 .disableCachingNullValues() // 默认缓存1小时 .entryTtl(Duration.ofHours(1)); return RedisCacheManager.builder(factory) .cacheDefaults(config) .build(); } }

6. 实际使用示例

创建REST控制器访问缓存数据:

@RestController public class ProductController { @Autowired private ProductService productService; @GetMapping("/product/{id}") public Product getProduct(@PathVariable Long id) { return productService.getProductById(id); } }

7. 缓存操作说明

操作描述
缓存读取使用@Cacheable,方法调用时先检查缓存,命中则直接返回
缓存更新使用@CachePut,强制将方法返回结果更新到缓存
缓存删除使用@CacheEvict,从缓存中移除指定条目
缓存存储Redis将数据以键值对形式存储在内存中,可设置TTL

8. 最佳实践建议

  1. 序列化选择:避免使用JDK序列化,推荐使用JSON序列化(如GenericJackson2JsonRedisSerializer
  2. 连接池配置:生产环境必须配置Lettuce连接池限制,避免资源耗尽
  3. TTL设置:根据业务需求合理设置缓存过期时间
  4. 空值缓存:考虑缓存空值,防止缓存穿透
  5. 缓存粒度:根据查询模式选择合适的缓存粒度(整个对象或部分字段)

通过Spring Cache与Redis的结合使用,可以大幅提高应用性能,减少数据库访问次数,同时确保缓存数据的一致性和及时更新。

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 16:45:28

HoRain云--Go语言递归函数详解与优化技巧

&#x1f3ac; HoRain云小助手&#xff1a;个人主页 &#x1f525; 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;…

作者头像 李华
网站建设 2026/5/12 12:06:01

计算机毕业设计|基于ssm + vue社团管理系统(源码+数据库+文档)

社团管理 目录 基于springboot vue个人记账系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于ssm vue社团管理系统 一、前言 博主介绍&#xff1a;✌️大厂码农|…

作者头像 李华
网站建设 2026/5/12 9:33:19

校园外卖系统(源码+数据库+文档)

校园外卖 目录 基于springboot vue校园外卖系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue校园外卖系统 一、前言 博主介绍&#xff1a;✌️大…

作者头像 李华
网站建设 2026/5/10 8:52:51

在线考试系统(源码+数据库+文档)

在线考试 目录 基于springboot vue在线考试系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue在线考试系统 一、前言 博主介绍&#xff1a;✌️大…

作者头像 李华
网站建设 2026/5/12 10:54:02

基于springboot 大学生就业招聘系统(源码+数据库+文档)

大学生就业招聘 目录 基于springboot vue大学生就业招聘系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue大学生就业招聘系统 一、前言 博主介绍…

作者头像 李华