尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Redis 缓存三大问题实战:穿透、击穿、雪崩
日期2025-08-15 | 作者枝莺 | 分类后端开发问题背景暑假在开发记者团设备管理小程序时发现某些时间段接口响应特别慢。排查后发现是 Redis 缓存使用不当导致的。今天系统整理下缓存三大经典问题。1. 缓存穿透现象查询一个根本不存在的数据缓存中没有每次请求都打到数据库。用户查 id99999不存在 → 缓存没有 → 查数据库 → 数据库也没有 → 缓存不写 → 下次再来继续打数据库解决方案// 方案1: 缓存空值简单有效 public Device getDevice(Long id) { String key device: id; Device device (Device) redisTemplate.opsForValue().get(key); if (device ! null) return device; // 检查是否是缓存空值标记 String nullMark (String) redisTemplate.opsForValue().get(device:null: id); if (NULL.equals(nullMark)) return null; device deviceMapper.selectById(id); if (device ! null) { redisTemplate.opsForValue().set(key, device, 30, TimeUnit.MINUTES); } else { // 缓存空值短期过期 redisTemplate.opsForValue().set(device:null: id, NULL, 3, TimeUnit.MINUTES); } return device; }// 方案2: 布隆过滤器更优雅 Configuration public class BloomFilterConfig { Bean public BloomFilterLong deviceBloomFilter(DeviceMapper mapper) { ListLong allIds mapper.selectAllIds(); BloomFilterLong filter BloomFilter.create( Funnels.longFunnel(), allIds.size(), 0.01); allIds.forEach(filter::put); return filter; } }2. 缓存击穿现象热点key在过期瞬间大量并发请求同时打到数据库。热点key device:hot:100 过期 → 瞬间1000个请求同时查DB → 数据库压力暴增解决方案// 互斥锁最常用 public Device getHotDevice(Long id) { String key device:hot: id; Device device (Device) redisTemplate.opsForValue().get(key); if (device ! null) return device; // 加锁只有一个请求去查DB String lockKey lock:device: id; try { if (redisTemplate.opsForValue().setIfAbsent(lockKey, 1, 10, TimeUnit.SECONDS)) { // 双重检查 device (Device) redisTemplate.opsForValue().get(key); if (device ! null) return device; device deviceMapper.selectById(id); redisTemplate.opsForValue().set(key, device, 30, TimeUnit.MINUTES); return device; } else { // 没拿到锁等一会儿重试 Thread.sleep(100); return getHotDevice(id); // 递归重试 } } finally { redisTemplate.delete(lockKey); } }3. 缓存雪崩现象大量key在同一时间过期或者Redis挂了。解决方案过期时间加随机值EXPIRE random(0~300)秒多级缓存本地Caffeine RedisRedis 高可用哨兵/集群// 过期时间加随机 int expireTime 1800 ThreadLocalRandom.current().nextInt(300); redisTemplate.opsForValue().set(key, value, expireTime, TimeUnit.SECONDS);总结问题根本原因核心方案穿透查不存在的数据布隆过滤器击穿热点key过期互斥锁雪崩大量key同时过期过期时间随机化这些方案在我自己的项目里全部落地了实际效果很好。特别是互斥锁方案把热点数据查询的DB压力从峰值1000QPS降到了1QPS。
RELATED

相关推荐

Prometheus 监控 从使用到原理,一次讲清 01-05

Prometheus 监控 从使用到原理,一次讲清 01-05

Prometheus 监控 从使用到原理,一次讲清 01-05 一、参考资料 【Prometheus 监控 从使用到原理,一次讲清】 https://www.bilibili.com/video/BV1modgBJE74/?share_sourcecopy_web&vd_source855891859b2dc554eace9de3f28b4528 二、笔记总结 1、Promet…

📅 2026/9/26 12:06:48
从springsnail项目剖析Linux高性能服务器核心架构:进程池、epoll与负载均衡

从springsnail项目剖析Linux高性能服务器核心架构:进程池、epoll与负载均衡

1. 项目概述 最近在翻看一些经典的Linux服务器编程资料时,又看到了《Linux高性能服务器编程》这本书。这本书可以说是很多后端开发者和系统工程师的启蒙读物,里面不仅讲了网络编程的基础,更重要的是提供了一个完整的项目源码——springsnail。…

📅 2026/8/22 20:14:11
TPA3128D2音频放大器与PIC18LF4455微控制器的集成设计

TPA3128D2音频放大器与PIC18LF4455微控制器的集成设计

1. TPA3128D2 音频放大器核心特性解析TPA3128D2是德州仪器(TI)推出的一款高效D类音频功率放大器芯片,专为追求高音质和低功耗的应用场景设计。这款芯片在蓝牙音箱、无线扬声器和各类便携式音频设备中表现出色,其技术特性值得深入探讨。1.1 功率输出与供电…

📅 2026/9/25 7:40:00
MORE NEWS

更多资讯

📰

AI Agent发行版:用Profile与插件系统实现生产级工程化

1. 项目概述:这不是在搭玩具,而是在锻造一个可交付的AI Agent操作系统“构建你自己的 AI Agent 发行版”——这个标题里藏着三个被严重低估的关键词:发行版、Profile、生产部署。它不是教你调用一次OpenAI API,也不是让你跑通一个…

📰

VC使用自定义资源:FindResource/LoadResource/UnLockResource 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

微信小程序+SSM快递管理系统实战:登录鉴权与运单状态同步

简介:本资源是一份面向软件工程专业本科生的毕业设计论文,题为《基于微信小程序的快递管理平台的设计与实现》,完整呈现了移动互联网场景下典型B/S小程序架构系统的开发全过程。论文涵盖系统需求分析、微信小程序前端功能模块(用户…

📰

GaussDB M兼容模式连不上DBeaver?驱动、SSL与认证排查全攻略

最近在搞 GaussDB 的 M 兼容模式,顺手用 DBeaver 想连上去看看数据,结果一连就报错。查了好几天,网上资料东一块西一块,最后把问题拆开才理清楚。这篇就是把我踩过的坑、排查思路和最终能连上的配置完整写下来,做数据库…

📰

Hadoop序列化机制详解:为什么不用Java Serializable而用Writable

Hadoop里很多新人容易卡在一个问题上:为什么Map和Reduce中那些key/value非得实现一个叫Writable的接口,直接实现Java的Serializable不行吗?说实话,我当年也被这个问题绕了挺久。后来把整个过程捋清楚才发现,序列化这层…

📰

开源在线表格Univer实战:公式引擎与Canvas渲染如何重塑Web表格体验

1. 我需要的不是又一个表格组件:Univer瞄准的到底是什么问题产品经理有一天跑过来跟我说:"把客户那份Excel报价表搬进网页里,还要能在线改、能自动算合计、能多人同时编辑。"我一开始以为这是个普通的"做个表格页面"的需…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬