最近帮朋友模拟面试,发现一个有意思的现象:当面试官问"你了解Redis吗",大部分候选人能流畅背出"Redis是内存数据库""支持多种数据结构",但一旦追问"为什么用跳表实现Zset?""主从同步延迟怎么排查?",回答就开始卡壳。我想说:面试官不是要你当"人形文档",而是想确认你是否具备"用Redis解决实际问题"的实战能力。
一、第一层考察:是否真正"用过"Redis,而非"知道"Redis
去年面试过一个应届生,简历写着"熟练使用Redis"。当我问"你在项目中用Redis存过什么数据?",他回答:"存过用户的token,还有商品的库存。" 我继续追问:"为什么选择Redis存token?MySQL不行吗?" 他愣了一下:"因为Redis读写快。" 这种回答暴露了典型的"工具崇拜"——只知道Redis性能好,却没思考过"快"背后的原理,以及是否真的适合当前场景。
面试官想听的:你能结合具体业务场景,说明Redis的适用性。比如:
- 存token:需要快速查询(O(1)复杂度)、自动过期(不用自己写定时任务),比MySQL的索引查询+定时清理更高效;
- 存库存:需要原子操作(INCR/DECR避免超卖),比MySQL的事务锁更轻量&#