选型

Redis

你可能会说

首页一慢就加 Redis,可我从没想清楚里面到底该放什么。

放在内存里的键值存储,主要用来加速数据在内存里,读写是微秒级;常用来做缓存、计数、排行榜、会话和分布式锁。它默认不是「唯一数据源」——缓存丢了,业务要能回主库重建。
也常被叫作缓存Redis 缓存
先问一句要抗读、要计数?
默认Redis→擅长缓存/排行榜→别用唯一数据源
成熟度采用

什么时候选它

  • 缓存热点数据,挡住数据库的读压力
  • 计数、排行榜、去重(Set)、限流(原子自增)
  • 会话、验证码、短链接映射等短生命周期数据
  • 分布式锁、轻量队列(可靠性要求不高时)

什么时候别选

  • 当唯一数据库——持久化是补充手段,不是关系库级保证
  • 存超大 value 或做复杂多条件查询:内存贵、能力弱
  • 账务类强一致写入,回到关系库
容易混在一起 · 怎么分
Redis≠Memcached

Redis 有数据结构、持久化、集群和 Lua;Memcached 只做简单 KV 缓存。

Redis≠数据库

它是加速层,缓存失效时业务必须能回源重建。

缓存≠消息队列

用 Redis 做队列在可靠性要求高时要谨慎,Kafka / RabbitMQ 更合适。

Q面试会问什么

  • 问:Redis 为什么快?
    答:纯内存 + 单线程事件循环 + IO 多路复用,避免锁竞争和线程切换;慢查询和大 key 会破坏这个优势。
  • 问:穿透、击穿、雪崩分别怎么解?
    答:穿透用空值缓存或布隆过滤器;击穿用互斥重建或逻辑过期;雪崩错开过期时间并做高可用。
  • 问:持久化怎么选?
    答:RDB 快照恢复快但可能丢一段数据;AOF 更完整但文件大、恢复慢;生产常混合使用。
延伸阅读 · 权威出处