当前位置: 首页 > news >正文

高频面试--redis

Reids

1. 常见的数据结构(string, list, hash, set, zset)

答法模板:

Redis 提供五种核心数据结构:

  • String:最基本的类型,支持整数、自增、自减、位操作。

  • List:双端链表,支持消息队列(如 LPUSH/RPOP)。

  • Hash:键值对集合,适合存储对象(如用户信息)。

  • Set:无序集合,支持去重、集合运算(如交并差)。

  • ZSet(Sorted Set):有序集合,元素按 score 排序,适用于排行榜。

可加一句:

实际开发中我用 ZSet 做过文章点赞排行榜,Set 做签到记录,List 做延迟队列等。


2. ZSet 的底层实现

答法模板:

ZSet 底层是 跳表(SkipList)+ 哈希表(HashMap) 的组合:

  • 哈希表用来快速定位元素(O(1));

  • 跳表用于按 score 排序,支持范围查询(O(log n))。

可补一句:

跳表在性能上接近平衡树,但实现简单,Redis 源码中使用跳表而非红黑树。


3. Redis 分布式锁实现(原子性、死锁问题)

答法模板:

Redis 分布式锁常用 SET key value NX PX timeout 保证原子性(一次性设置键和过期时间)。

  • 使用唯一标识避免误删;

  • 删除时用 Lua 脚本保证检查和删除是原子操作;

  • 避免死锁要设置过期时间;

  • 复杂业务推荐用 Redisson,它实现了可重入锁、看门狗续约等机制。


4. AOF 重写机制

答法模板:

AOF(Append Only File)是 Redis 的持久化方式之一。

  • AOF 重写(rewrite)会在文件过大时触发;

  • 并不是清空旧文件,而是重新生成最短命令集合

  • AOF 重写过程是后台线程完成,不影响主线程。

可补一句:

Redis 会同时维护新旧 AOF 文件,在 rewrite 成功后再原子性切换。


5. RDB 的写时复制技术(Copy-On-Write)

答法模板:

RDB 是通过 fork() 子进程生成快照。

  • 子进程把内存数据写入磁盘;

  • 主进程继续服务;

  • Redis 使用写时复制(Copy-On-Write),保证 fork 后内存修改不会影响子进程写入快照。


6. Redis 集群为什么采用 Gossip 协议同步数据

答法模板:

Redis Cluster 中节点通过 Gossip 协议互相传播节点状态,实现故障感知。

  • 每个节点周期性 ping 其他节点;

  • 如果多个节点判断某节点不可达,即认为该节点挂了;

  • Gossip 协议保证了集群的可扩展性和容错性。


7. Redis 分片解决单机实例压力大问题

答法模板:

Redis Cluster 采用哈希槽分片方案,共 16384 个槽位,每个主节点负责一部分槽。

  • key 会通过 CRC16 算法映射到槽;

  • 不同槽分布在不同节点,实现负载均衡;

  • 节点可动态扩容或迁移槽。


8. MySQL 与 Redis 数据一致性问题

答法模板:

Redis 是缓存层,MySQL 是持久层,典型一致性问题有:

  • 缓存穿透:查询不存在数据 → 使用布隆过滤器或缓存空值;

  • 缓存击穿:热点 key 过期瞬间高并发访问 → 加互斥锁(互斥更新);

  • 缓存雪崩:大量 key 同时过期 → 设置过期时间随机化;

  • 读写一致性:采用「先写数据库,后删缓存」策略;或使用消息队列异步刷新。


🧠 总结面试技巧:

  • 回答时注意层次清晰:“现象 → 原因 → 方案”

  • 能举实际项目中的使用更加分

  • 不确定的地方坦诚说“我理解的是……”,不要硬编

相关文章:

  • Python打卡 DAY 38
  • Docker 挂载卷并保存为容器
  • LeetCode 2894.分类求和并作差:数学O(1)一行解决
  • 大语言模型 21 - MCP 自动操作 Figma+Cursor 实现自动原型开发!
  • 利用 MkDocs 和 GitHub 部署个人博客网页
  • 基于 SpringBoot 与 VueJS 的智慧就业服务平台构建:技术融合与实践创新
  • AI赋能引爆短剧全球化风潮,腾讯云媒体处理助力短剧平台出海吸金
  • proteus8.4 安装包下载地址与安装教程
  • Web通信协议全景解析:从HTTP到WebService的技术演进与对比
  • NGINX HTTP/2 全面指南开启、调优与实战
  • Windows版本的postgres安装插件http
  • 恶意npm与VS Code包窃取数据及加密货币资产
  • FastMoss 国际电商Tiktok数据分析 JS 逆向 | MD5加密
  • Pytorch
  • [25-cv-05718]BSF律所代理潮流品牌KAWS公仔(商标+版权)
  • Springboot引入Spring Cloud for AWS的配置中心(Parameter Store和Secrets)
  • 使用redis代替session的登录校验
  • 语音合成之十七 语音合成(TTS)中文自然度:问题、成因、解决方案
  • 关于 Web 安全:6. 常见 CMS 开源系统风险点
  • 2.3 TypeScript 非空断言操作符(后缀 !)详解
  • 做模版网站需要租服务器吗/哈尔滨优化网站公司
  • 淘宝联盟链接的网站怎么做/平台推广是什么工作
  • 怎么建设大型商务网站/爱站网长尾关键词
  • 澄迈网站建设/优秀企业网站模板
  • 企业品牌网站建设多少钱/人民网 疫情
  • 爱站攻略/人民日报最新头条10条