Stay Hungry,Stay Foolish!

Spring Boot 缓存实战:用 Redis 给天气接口提速,一个开箱即用的 Demo 讲解

 

Spring Boot 缓存实战:用 Redis 给天气接口提速,一个开箱即用的 Demo 讲解

https://github.com/fanqingsong/Springboot-caching-demo

 https://docs.spring.io/spring-boot/index.html

 

 

Spring Boot 缓存实战:用 Redis 给天气接口提速,一个开箱即用的 Demo 讲解

如果你正在学 Spring Boot 的缓存机制,或者想在项目里落地"缓存"这个性能优化手段,那么这个仓库 fanqingsong/Springboot-caching-demo 是一个非常值得上手练手的项目。它用一个"天气数据"场景,把内存缓存和 Redis 缓存讲透了。

一、这个项目到底做了什么?

一句话概括:这是一个 Spring Boot API,把天气数据存在 PostgreSQL 里,再把查询结果缓存到 Redis 中。

核心思路很朴素——数据库查询慢、开销大,如果同样的数据被反复请求,为什么每次都要去"打扰"数据库?把结果放到缓存里,下次直接命中,响应速度立刻起飞。

项目通过三个核心注解来控制"什么该缓存、怎么更新、什么时候失效":

  • @Cacheable:读缓存,有就直接返回,没有才查库并写入缓存;
  • @CachePut:写缓存,用于更新数据后同步刷新缓存;
  • @CacheEvict:清缓存,数据删除或变更时让旧缓存失效。

而真正承担"存储"角色的,是 Redis。

二、技术亮点:一套代码,三种缓存方案自由切换

这个 Demo 最有价值的地方,在于它没有只演示一种缓存,而是把 Spring Boot 支持的三种缓存提供者都做了进来:

缓存方案说明
simple(ConcurrentHashMap) Spring 内置的简单内存缓存,零依赖,适合入门理解
Caffeine 高性能的本地内存缓存,带淘汰策略,适合单机场景
Redis 独立的分布式缓存服务,可持久化、可集群,适合生产环境

这意味着你可以通过配置切换 provider,直观对比"进程内缓存"和"独立缓存服务"的差异,非常适合建立对缓存选型的直觉。

三、贴近生产的设计细节

虽然是 Demo,但项目里的一些设计已经很有"生产味":

  • TTL(过期时间):给 Redis 缓存设置了 10 分钟 TTL,避免数据永久不过期导致的脏数据问题;
  • 内存上限:配置了 64MB 的 LRU 内存限制,防止缓存无限膨胀撑爆内存;
  • 配置集中管理:通过 CacheConfig 把缓存相关的 Bean 统一装配;
  • 数据自举:用 ApplicationRunner 在启动时自动灌入种子天气数据,开箱即用。

项目还附带了清晰的分层文档,涵盖架构、缓存原理、注解、Bean 生命周期、API、运行方式以及 Redis 调试工具(redis-cli / Redis Insight),学习曲线非常平滑。

四、一条命令跑起来

部署体验堪称丝滑,借助 Docker Compose 把应用、数据库、Redis 全部编排好,只需:

docker compose up --build

跑起来后可以访问三个入口:

  • 演示 UI:http://localhost:8080,可视化展示缓存命中与未命中;
  • API / Swagger:http:swagger-ui.html,直接调试接口;
  • Redis Insight:http://localhost:5540,图形化查看缓存里的键值。

五、项目概况与适合谁

  • 技术栈构成:Java 为主(57.7%),配合 JavaScript / HTML / CSS 写的演示前端,以及 Dockerfile 做容器化;
  • 适合人群:想系统理解 Spring 缓存注解、Redis 集成、Docker Compose 本地编排的初中级开发者;
  • 学习价值:不只是"能跑",而是把缓存的选型、配置、失效策略、调试手段串成了一条完整链路。

写在最后

性能优化里,缓存往往是性价比最高的一招,但也是最容易踩坑的一招——缓存穿透、缓存雪崩、脏数据、内存溢出,每一个都能让新手头疼。这个 Demo 用一个简单直观的天气场景,把"正确的缓存该长什么样"演示了一遍:读用 @Cacheable、改用 @CachePut、删用 @CacheEvict,再加上 TTL 和内存上限兜底。 想入门 Spring 缓存,从这里开始,准没错。


以上是根据该 GitHub 项目整理的技术博客,已按"项目简介 → 技术亮点 → 生产细节 → 快速上手 → 适用人群"的发布结构组织,可直接用于博客平台发布。如果你希望我把它导出为 Word / PDF 文件,或调整风格(更口语化 / 更偏教程向 / 补充代码示例),告诉我即可。

 

posted @ 2026-10-04 20:25  lightsong  阅读(3)  评论(0)    收藏  举报
千山鸟飞绝,万径人踪灭