redis 性能运维面试要点
一、性能排查总览类 Q1:Redis 变慢了,你的排查思路是什么? 确认现象:延迟、QPS、错误率。 看慢查询:SLOWLOG GET 找慢命令。 看大 key / 热 key:--bigkeys、--hotkeys。 看阻塞命令:KEYS、FLUSHALL
一、性能排查总览类 Q1:Redis 变慢了,你的排查思路是什么? 确认现象:延迟、QPS、错误率。 看慢查询:SLOWLOG GET 找慢命令。 看大 key / 热 key:--bigkeys、--hotkeys。 看阻塞命令:KEYS、FLUSHALL
一、Redis 事务基础类 Q1:Redis 事务是什么? 一组命令的集合,用 MULTI 开启,EXEC 执行。 命令入队,EXEC 时顺序、一次性执行。 执行期间不会被其他客户端命令打断。 但不支持回滚,是“弱事务”。 Q2:Redis 事务的命令有哪些?
一、基础概念类 Q1:什么是分布式锁?为什么需要? 分布式环境下,多个进程/节点互斥访问共享资源。 单机锁(synchronized、ReentrantLock)只在单 JVM 有效。 分布式锁保证跨节点互斥。 场景:库存扣减、订单防重、定时任务防重复执行。 Q2:分布式锁有哪些实现方式?
一、缓存总览类 Q1:缓存常见的问题有哪些? 缓存穿透:查不存在的数据,打到 DB。 缓存击穿:热点 key 过期,大量请求打到 DB。 缓存雪崩:大量 key 同时过期,或缓存整体不可用。 缓存与数据库一致性:双写不一致。 热点 key:单个 key 压力过大。
一、过期删除策略类 Q1:Redis 的 key 过期后是立即删除吗? 不是。Redis 用惰性删除 + 定期删除组合,不会立即删。 过期 key 在未被访问时可能仍占内存。 所以会出现“key 已过期但内存没释放”的现象。 Q2:Redis 的过期删除策略有哪些? 惰性删除:访问 key 时才检查
一、总览类 Q1:Redis 有哪几种持久化方式? RDB:快照,二进制存某个时间点的全量数据。 AOF:追加日志,记录每条写命令。 混合持久化:RDB 全量 + AOF 增量,Redis 4.0+。 无持久化:纯缓存场景可关闭。 Q2:RDB 和 AOF 的区别?
一、线程模型基础类 Q1:Redis 是单线程还是多线程? 命令执行是单线程,这是 Redis 的核心设计。 但 Redis 并非完全单线程: 网络 IO:Redis 6 之前单线程,6.0 后可多线程。 持久化:RDB fork 子进程,AOF 重写 fork 子进程。 异步删除:UNLINK、
一、基础概念类 Q1:Redis 是什么?有什么特点? 基于内存的键值数据库,也支持持久化。 特点:纯内存、单线程命令执行、IO 多路复用、丰富数据结构、支持主从/哨兵/Cluster。 常用于缓存、计数器、排行榜、分布式锁、消息队列。 Q2:Redis 为什么快? 纯内存操作,避免磁盘 I/O。