版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Redis高频面试题及详细实操答案(接地气版)一、Redis基础认知(初级必问)1、Redis是什么?优缺点是什么?答案:Redis是一款开源的内存型键值对数据库,常用于缓存、分布式锁、限流、消息队列等场景,支持多种数据结构。优点:速度极快:数据主要存内存,单线程模型避免线程竞争开销,单机QPS能到10万+数据结构丰富:支持String、List、Hash、Set、ZSet等,能适配绝大多数业务场景支持持久化:可以把内存数据落地磁盘,重启不丢数据功能齐全:支持过期删除、事务、Lua脚本、发布订阅、集群扩容轻量易用:部署简单、命令直观,运维成本低缺点:内存受限:数据依赖内存,成本比磁盘数据库高,不适合存海量冷数据单线程瓶颈:单核性能强,但无法利用多核CPU,大流量场景需搭集群持久化有损耗:RDB、AOF持久化会占用一定磁盘和CPU资源2、Redis为什么这么快?答案:网上很多标准答案很虚,实际核心就4点:纯内存操作:所有读写都在内存完成,没有磁盘IO的耗时,这是最核心原因单线程模型:避免了多线程锁竞争、线程切换的开销,代码执行效率极高IO多路复用:用epoll模型,一个线程能监听大量客户端连接,不用为每个连接开线程数据结构高效:底层都是优化过的简易数据结构,没有多余冗余逻辑补充:Redis6.0后的多线程只用来处理网络IO,核心读写命令还是单线程,保证线程安全。3、Redis单线程为什么不会CPU瓶颈?答案:Redis的瓶颈从来不是CPU,而是内存和网络IO。单线程执行的都是简单内存操作,速度极快,每秒能处理十万级请求,绝大多数业务的流量根本打不满CPU。只有在执行耗时Lua脚本、超大key删除、大量模糊查询时,才会出现CPU打满、主线程阻塞的问题。4、Redis常用数据结构及业务场景?答案:只记工作中最常用的,面试够用:String:缓存用户信息、配置、计数器、分布式锁、限流计数Hash:存储结构化数据,比如用户详情、商品信息,比String序列化更省内存、支持局部更新List:有序可重复,做简单消息队列、点赞列表、日志队列Set:无序不可重复,做去重、好友共同关注、抽奖去重ZSet:有序不可重复(带score分值),做排行榜、延时队列、权重排序二、Redis过期与淘汰策略(高频必问)1、Rediskey过期删除机制有哪些?答案:三种机制配合使用,不是单一方式:定时删除:key到期立刻删除。优点是内存释放及时,缺点是过期key多会占用大量CPU,主线程阻塞,生产基本不用惰性删除:key到期不主动删,下次访问时才判断过期并删除。优点是省CPU,缺点是过期key长期占内存,造成内存浪费定期删除:每隔一段时间,随机抽取一批key检查过期并删除。平衡CPU和内存压力,是Redis默认的主动过期方式总结:日常靠惰性删除兜底,定期删除主动清理,杜绝大量过期key堆积。2、Redis内存淘汰策略有哪些?生产常用哪种?答案:当Redis内存达到maxmemory上限时,触发淘汰策略,一共8种,分4类:不淘汰:noeviction(默认),内存满了直接报错,拒绝写入,生产绝对不用淘汰所有key:
allkeys-lru:淘汰最近最少使用的key(生产最常用)allkeys-lfu:淘汰最少访问次数的keyallkeys-random:随机淘汰key只淘汰带过期的key:
volatile-lru:过期key中淘汰最少使用的volatile-lfu:过期key中淘汰最少访问的volatile-ttl:过期key中优先删快到期的volatile-random:过期key中随机删生产推荐:allkeys-lru,适配绝大多数缓存场景,优先保留热点数据,淘汰冷数据。3、LRU和LFU的区别?答案:LRU:看最近使用时间,很久没用就淘汰。缺点:偶尔访问一次的冷数据,会挤占长期高频访问但短暂未更新的热点数据LFU:看访问频次,用得少就淘汰。更贴合真实业务热点,能规避LRU的缺陷,Redis4.0+支持三、Redis持久化(中高级必问)1、RDB和AOF的区别?生产怎么选择?答案:RDB(快照持久化)定期把全量内存数据生成二进制快照文件落地磁盘。优点:文件小、恢复速度快、不频繁占用IO缺点:会丢数据,两次快照之间的新增数据断电会丢失;fork子进程会占用内存AOF(日志持久化)记录每一条写命令日志,重启后重放日志恢复数据。优点:数据安全性高,最多丢1秒数据(默认配置)缺点:日志文件大,恢复速度慢,持续占用磁盘IO生产选型纯缓存场景:可以关闭持久化,丢数据不影响业务数据要求高:RDB+AOF同时开启,兼顾恢复速度和数据安全2、AOF三种刷盘策略?答案:always:每写一条命令立刻刷盘,数据零丢失,性能极差,不用everysec:每秒批量刷盘,最多丢1秒数据,生产默认推荐no:交给操作系统自动刷盘,性能最高,丢数据风险大3、AOF重写机制是什么?答案:AOF日志会持续累加,大量冗余命令(比如同一个key多次修改)会导致文件超大。Redis会触发AOF重写,遍历当前内存数据,用最少的命令生成新日志文件,替换旧文件,压缩文件体积,不影响正常读写。四、缓存三大问题(面试核心、工作常用)1、缓存穿透、击穿、雪崩的区别及解决方案?(1)缓存穿透现象:查询数据库和缓存都没有的数据(比如恶意伪造id),请求直接打穿到数据库,高频请求会压垮DB。解决方案:空值缓存:查询为空时,缓存空key,设置短过期时间布隆过滤器:提前拦截不存在的key,拒绝请求到缓存和DB接口校验、限流防刷(2)缓存击穿现象:热点key过期瞬间,大量并发请求同时查数据库,瞬间压垮DB。解决方案:互斥锁(分布式锁):保证同一时间只有一个请求查DB、更新缓存热点key永不过期过期时间随机偏移,避免批量过期(3)缓存雪崩现象:大量key同时过期,或者Redis集群宕机,所有请求全部打向数据库,造成DB雪崩宕机。解决方案:过期时间加随机值,避免批量过期搭建Redis集群、主从+哨兵,避免单点故障服务层加降级、限流、熔断机制多级缓存(本地缓存+Redis缓存)2、缓存和数据库双写一致性怎么保证?答案:没有绝对完美的方案,根据业务一致性要求选择:(1)普通业务(允许短暂不一致)优先用更新数据库、删除缓存,不更新缓存。原因:更新缓存容易产生无效更新,删除缓存成本更低,后续查询自动回写最新数据。(2)一致性要求较高采用延迟双删:先删缓存、更新数据库、休眠短暂时间再删一次缓存,解决读写并发导致的脏数据问题。(3)强一致性业务直接放弃缓存,直连数据库;或用分布式锁锁住读写操作,保证串行执行。补充:绝对不要用“先更缓存再更DB”,极易造成数据永久不一致。五、Redis高可用(主从、哨兵、集群)1、主从复制原理?答案:Redis主从架构:主节点写,从节点读,从节点同步主节点数据,实现读写分离、数据备份。同步流程:从节点首次连接主节点,触发全量同步:主节点生成RDB快照,发送给从节点,同时缓存同步期间的写命令从节点加载RDB文件完成初始化主节点推送缓存的增量命令,从节点执行,追上主节点数据后续持续增量同步,实时同步主节点写命令2、哨兵机制的作用?答案:哨兵是专门监控主从节点的工具,解决主节点宕机无法自动切换的问题,实现高可用。核心三大作用:监控:实时监测主、从节点是否存活通知:节点异常时推送消息给客户端自动故障转移:主节点宕机,哨兵投票选出新主节点,自动切换主从,重启旧主变为从节点注意:哨兵无法解决容量扩容、读写压力上限问题,只能保证高可用。3、Redis集群原理(哈希槽)?答案:RedisCluster集群采用哈希槽分片,一共16384个槽位,均匀分配给所有主节点。读写流程:根据key计算CRC16哈希值,对16384取模,得到对应槽位,定位到对应主节点执行命令。集群优势:横向扩容、分担读写压力、突破单机内存和QPS限制,同时自带故障转移。缺点:不支持多key批量操作(跨槽位)、事务支持有限。六、Redis实战踩坑与优化1、什么是大key?危害及解决方案?答案:一般定义:String超过10KB,集合类型元素超过1000个,都算大key。危害:读写耗时变长,阻塞主线程,导致Redis卡顿网络传输量大,接口响应慢集群迁移、过期删除时极易引发性能抖动解决方案:拆分大key:将超大集合拆分为多个小key避免存储超大字符串,精简缓存数据异步删除大key(unlink命令替代del)2、Redis热点key问题怎么解决?答案:热点key是某个key访问量极高,单机扛不住压力,流量倾斜严重。解决方案:本地缓存兜底:JVM本地缓存优先查询,减少Redis请求量热点key分片:同一个热点数据分散到多个key,分摊流量集群扩容,单独隔离热点key节点3、Redis为什么不适合存大量冷数据?答案:Redis是内存数据库,内存成本远高于磁盘。大量冷数据长期占用内存,会挤占热点数据内存,触发内存淘汰,导致缓存命中率下降、性能变差。冷数据直接存MySQL、ES等磁盘数据库即可。4
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北省黄冈市浠水县2027届中考适应性考试物理试题含解析
- 石油天然气钻探与技术部门岗位人员绩效分析表
- 建筑施工班组安全防护作业手册
- 智能物联网技术应用与开发入门指南
- 2026年社会工作者职业资格考试(社会工作法规与政策中级)强化练习题及答案
- 美容顾问客户服务及销售业绩绩效评定表
- 2026年环境影响评价工程师考试真题卷及答案-案例分析篇
- 合作伙伴财务账目对账函(3篇)范文
- 2026特种设备焊接操作人员考试试卷及答案-焊接设备维护与故障排除
- 商洽2026年物流运输费用结算方式变更事宜7篇范本
- 2026危险化学品行业安全隐患排查对标手册
- Unit4 A better me Speed up教学课件2026-2027外研版五上英语
- 2026语文新教材 六年级上册第3课 古诗词三首 教学课件
- 河南农商行审计考试试题及答案
- 排污许可管理办法
- GB/T 9535.1-2025地面用光伏组件设计鉴定和定型第1部分:测试要求
- 银行营业厅保洁服务标准及流程
- JG/T 245-2009混凝土试验用振动台
- 手术患者手术风险评估制度
- 2024年中国水运报社有限公司招聘笔试参考题库附带答案详解
- (正式版)HGT 20593-2024 钢制化工设备焊接与检验工程技术规范
评论
0/150
提交评论