Redis
Redis 是内存键值数据库,官方定位是“数据结构服务器”。面试主线的起点是三个问题:它解决什么、为什么快、用在哪儿。
定位
- 数据全放内存,读写都是内存操作,单机轻松支撑十万级 QPS
- 提供丰富的数据结构(string/hash/list/set/zset 加 Stream 等),不只是 get/set
- 有持久化(RDB/AOF),但定位仍是缓存与辅助存储,不是主存储
- 单机内存有限,容量扩展靠 Cluster 分片
为什么快
面试加分细节:Redis 单线程是指命令执行单线程,网络 IO 在 6.0 后可以多线程(见线程模型篇)。单线程快的前提是命令都是微秒级内存操作,所以慢命令(KEYS、大 key 操作)会阻塞整个实例。
典型应用场景
与 Memcached 的对比
面试追问
- Redis 为什么快? 内存操作加单线程免竞争加 IO 多路复用。单线程的前提是命令微秒级,慢命令是事故源头
- 单线程怎么处理并发连接? IO 多路复用,一个线程监听大量 socket,事件就绪才处理
- Redis 是数据库吗? 有持久化但定位是缓存与辅助存储。数据可靠性弱于关系库,重启或宕机会丢数据
- 什么场景不该用 Redis? 数据必须持久且事务复杂、超过内存容量的数据、需要 SQL 查询的场景
- Memcached 为什么被淘汰? 只有 string、无持久化、无高可用方案。Redis 覆盖面完全超过它