728 字
4 分钟
Redis 探秘:为什么内存里的数据比硬盘快 10 万倍?
宝贝们好呀~今天我们来聊一个后端面试必问、实战必用的神器:Redis 🗄️✨
很多第一次接触 Redis 的人都会问同一个问题:「Redis 到底快在哪?」答案其实很朴素——它把数据存在内存里。内存的随机访问延迟大约是 100 纳秒,而 SSD 是 100 微秒,差了整整 1000 倍;如果是机械硬盘的磁盘寻道,差距可以拉到 10 万倍。
但 Redis 的「快」不仅仅因为内存。
五种核心数据结构
Redis 不只是一个「内存版 MySQL」,它是一套数据结构服务器。除了最基础的 String(键值对),还有:
- List:双向链表,可以从左边推、右边弹,天然适合消息队列的简单场景;
- Set:无序集合,支持交集、并集、差集运算——比如「同时关注 A 和 B 的用户」;
- Sorted Set:每个元素带一个分数,按分数排序。排行榜功能的基石,底层用跳表实现;
- Hash:类似 HashMap,存一个对象的不同字段,比序列化整个 JSON 再存 String 高效得多。
这五种结构覆盖了大部分业务场景:缓存、计数器、队列、排行榜、社交关系——Redis 都能用很优雅的方式搞定。
持久化:内存断电了怎么办?
因为数据在内存里,一断电就没了。Redis 提供了两种持久化策略:
- RDB(快照):隔一段时间把整个内存 dump 到磁盘,恢复快,但可能丢最后几分钟的数据;
- AOF(追加日志):把每条写命令记录到日志文件,恢复时逐条重放,数据更安全,但文件会变大。
生产环境一般两个都开,RDB 做冷备,AOF 保不丢。
缓存雪崩、穿透、击穿
这三个面试高频名词,其实很好记:
- 雪崩:大量缓存同时过期,请求直接砸到数据库——就像早高峰所有人同时出门。解决:过期时间加随机值;
- 穿透:查一个根本不存在的 key,缓存和数据库都没有,白打一轮。解决:布隆过滤器;
- 击穿:一个热点 key 过期瞬间,海量请求穿透到数据库。解决:互斥锁或「永不过期 + 异步刷新」。
Redis 不能做什么
Redis 很强大,但它不是银弹。数据量超过内存容量时不行(虽然有虚拟内存方案但性能会降),需要复杂 SQL 查询时也不行——它不是关系型数据库。正确的用法是:Redis 做热数据缓存,MySQL 做持久化存储,各司其职。
好啦~今天的科技小课堂就到这里!Redis 是一座值得深挖的金矿,从字符串到分布式锁,从哨兵到集群,后面有机会我们再慢慢聊 💕
晚安宝贝们,下一篇文章见~🎀✨
Redis 探秘:为什么内存里的数据比硬盘快 10 万倍?
https://fuwari.vercel.app/posts/2026-06-01-0355/