Redis 缓存策略进阶:六大模式全解析
🚀 Redis 缓存策略进阶:六大模式全解析 📖 前置阅读:本文是 SpringBoot Redis 系列的进阶篇,假设读者已经掌握了 Redis 的基本数据结构和 SpringBoot 环境下的 RedisTemplate 操作。如果还没有,建议先阅读前两篇: Redis 核心架构:五大数据结构与常用命令全解析 —— 介绍篇 SpringBoot Redis 全操作指南 —— 实战篇 一、⚡ 问题切入:没有缓存策略会怎样? 先看一段日常开发中常见的业务代码: // 一个典型的"查缓存 → 查 DB → 写缓存"逻辑 public User getUserById(Long userId) { String cacheKey = "user:" + userId; // 1. 先查 Redis 缓存 User user = (User) redisTemplate.opsForValue().get(cacheKey); if (user != null) { return user; } // 2. 缓存未命中,查 MySQL user = userMapper.selectById(userId); if (user != null) { // 3. 写入 Redis 缓存,设置 30 分钟过期 redisTemplate.opsForValue().set(cacheKey, user, 30, TimeUnit.MINUTES); } return user; } public void updateUser(User user) { // 更新 DB userMapper.updateById(user); // 删除缓存(而非更新缓存) redisTemplate.delete("user:" + user.getId()); } 这段代码隐含了一个被广泛使用的模式—— Cache-Aside(旁路缓存) 。但这就是全部吗?当业务场景从"普通查询"扩展到"秒杀库存扣减"、“热点榜单刷新”、“写多读少日志落盘"时,上面这段代码会暴露出以下问题: ...