Redis
你可能会说
首页一慢就加 Redis,可我从没想清楚里面到底该放什么。
放在内存里的键值存储,主要用来加速数据在内存里,读写是微秒级;常用来做缓存、计数、排行榜、会话和分布式锁。它默认不是「唯一数据源」——缓存丢了,业务要能回主库重建。
也常被叫作缓存Redis 缓存
什么时候选它
- 缓存热点数据,挡住数据库的读压力
- 计数、排行榜、去重(Set)、限流(原子自增)
- 会话、验证码、短链接映射等短生命周期数据
- 分布式锁、轻量队列(可靠性要求不高时)
什么时候别选
- 当唯一数据库——持久化是补充手段,不是关系库级保证
- 存超大 value 或做复杂多条件查询:内存贵、能力弱
- 账务类强一致写入,回到关系库
容易混在一起 · 怎么分
Redis≠Memcached
Redis 有数据结构、持久化、集群和 Lua;Memcached 只做简单 KV 缓存。
Redis≠数据库
它是加速层,缓存失效时业务必须能回源重建。
缓存≠消息队列
用 Redis 做队列在可靠性要求高时要谨慎,Kafka / RabbitMQ 更合适。
Q面试会问什么
- 问:Redis 为什么快?
答:纯内存 + 单线程事件循环 + IO 多路复用,避免锁竞争和线程切换;慢查询和大 key 会破坏这个优势。 - 问:穿透、击穿、雪崩分别怎么解?
答:穿透用空值缓存或布隆过滤器;击穿用互斥重建或逻辑过期;雪崩错开过期时间并做高可用。 - 问:持久化怎么选?
答:RDB 快照恢复快但可能丢一段数据;AOF 更完整但文件大、恢复慢;生产常混合使用。
延伸阅读 · 权威出处