ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

20210304. 8. Redis 大厂面试汇总 - 拉勾教育

2021-03-04 15:32:06  阅读:232  来源: 互联网

标签:知识点 缓存 答题 20210304 拉勾 过期 Redis key


Redis 大厂面试汇总

缓存雪崩、缓存穿透、缓存击穿

  • 答题思路:
    • 三者的概念,发生场景、解决方案
    • 三者的区别和影响
  • 涉及知识点:Redis 第七章:缓存问题——缓存穿透、缓存雪崩、缓存击穿
  • 穿透:不存在的 key
  • 雪崩:大量的 key 失效
  • 击穿:一个 key 或一些 key 热点 key

大 Key,热点 Key 的处理

Hot Key

答题思路:

  • hot key 的概念,场景,问题
  • hot key 的发现
  • hot key 的处理

涉及知识点:Redis 第七章:缓存问题——hot key

Big Key

答题思路:

  • big key 的概念、场景,影响

    String > 10k ,list 大于 5000 个

  • big key 的发现

  • big key 的处理

涉及知识点:Redis 第七章:缓存问题——big key

数据库一致,缓存失效,数据并发竞争

数据库一致

答题思路:

  • Catch Aside Pattern
  • 数据源不一致
  • 场景的适用性(互联网)
  • 保证最终一致,一致的时间处理

涉及知识点:

  • Redis 第一章:Cache Aside Pattern
  • Redis 第七章:数据不一致

缓存失效

答题思路:

  • 缓存失效带来的问题:缓存穿透、缓存雪崩、缓存击穿(高并发)
  • 会让数据库压力过大而宕机
  • Redis 的缓存过期策略: LRU
  • Redis 设置的 expiretime , TTL

缓存失效的处理:

  • Redis 做 DB 时,不能失效 保证数据的完整性,数据一致问题,定时任务,在 DB 变化后,更新缓存
  • 可以失效但不穿 DB,失效后读取本地缓存或服务熔断
  • 异步更新 DB,数据时时同步

涉及知识点:

  • Redis 第七章:缓存穿透、缓存雪崩、缓存击穿
  • Redis 第二章:缓存过期和淘汰策略
  • Redis 第七章:缓存更新策略

数据并发竞争

答题思路:

  • 数据并发竞争的概念、场景
  • 数据并发竞争的影响

解决方案:

  • 将并发串行化:分布式锁 + 时间戳、利用队列
  • 使用 CAS :秒杀

涉及知识点:

  • Redis 第七章:数据并发竞争
  • Redis 第七章:乐观锁

热点数据和冷数据是什么

答题思路:

  • 热数据:hot key 位于 Redis 中,命中率尽量高
  • 冷数据:不经常访问的数据,位于 DB 中
  • 冷热的交换:maxmemory + allkeys lru
  • 交换比例:热 20 万、冷 200 万

Redis 作为 DB 时,冷数据不能驱逐,保证数据的完整性

涉及知识点:

  • Redis 第七章:hot key
  • Redis 第二章:缓存过期和淘汰策略

单线程的 Redis 为什么这么快

答题思路:

  • Redis 在内存中操作,持久化只是数据的备份,正常情况下内存和硬盘不会频繁 swap
  • 多机主从,集群数据扩展
  • maxmemory 的设置 + 淘汰策略
  • 数据结构简单,有压缩处理,是专门设计的
  • 单线程没有锁,没有多线程的切换和调度,不会死锁,没有性能消耗
  • 使用 I/O 多路复用模型,非阻塞 IO;
  • 构建了多种通信模式,进一步提升性能
  • 进行持久化的时候会以子进程的方式执行,主进程不阻塞

img

涉及知识点:

  • Redis 第二章:底层数据结构
  • Redis 第二章:缓存过期和淘汰策略
  • Redis 第三章:通信协议
  • Redis 第三章:事件处理机制
  • Redis 第四章:RDB 和 AOF
  • Redis 第六章:主从、集群

Redis 的过期策略以及内存淘汰机制

答题思路:

  • 为什么要过期
  • 什么情况下不能过期
  • 如何设置过期
  • expires 原理
  • 如何选择缓存淘汰策略

涉及知识点:

  • Redis第二章:缓存过期和淘汰策略

Redis 为什么是单线程的,优点是什么

答题思路:

  • Redis 采用单线程多进程集群方案
  • Redis 是基于内存的操作, CPU 不是 Redis 的瓶颈
  • 瓶颈最有可能是机器内存的大小或者网络带宽
  • 单线程的设计是最简单的
  • 但是对多核 CPU 利用率不够,所以 Redis 6 采用多线程

单线程优点:

  • 代码更清晰,处理逻辑更简单 不用去考虑各种锁的问题,
  • 不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗
  • 不存在多进程或者多线程导致的切换而消耗 CPU

涉及知识点:

  • Redis 第二章:缓存过期和淘汰策略
  • Redis 第三章:通信协议
  • Redis 第三章:事件处理机制

如何解决 Redis 的并发竞争 key 问题

  • Redis key的设计,尽量不竞争
  • 必须竞争:秒杀、分布式锁
  • 同数据并发竞争

Redis 分布式锁问题

答题思路:

  • 分布式锁的概念,应用场景
  • Redis 的实现方式
  • 分布式锁的本质分析
  • Redis 、ZooKeeper、etcd 三者的对比和应用场景
  • Redisson 的使用

涉及知识点:Redis 第七章:分布式锁

有没有尝试进行多机 Redis 的部署?如何保证数据一致的?

答题思路:

  • Redis 多机部署方案:Redis 主从+哨兵、Codis 集群、Redis Cluster
  • 多机: 高可用、高扩展、高性能
  • 三者的区别,适用场景
  • 数据一致性指的是主从的数据一致性
  • Redis 是 AP 模型,主从同步有时延。所以不能保证主从数据的时时一致性,只能保证数据最终一致性

保证数据一致性方案:

  • 忽略
    • 如果业务能够允许短时间不同步就忽略,比如:搜索,消息,帖子,职位
  • 强制读主库,从库只做备份使用
    • 使用一个高可用主库提供数据库服务
    • 读和写都落到主库上
    • 采用缓存来提升系统读性能
  • 选择性读主
    • 写主库时将哪个库,哪个表,哪个主键三个信息拼装一个 key 设置到 cache 里
    • 读时先在 cache 中查找:
    • cache 里有这个 key ,说明 1s 内刚发生过写请求,数据库主从同步可能还没有完成,此时就应该去主库查询
    • cache 里没有这个 key ,说明最近没有发生过写请求,此时就可以去从库查询

涉及知识点:

  • Redis 第六章:主从复制、哨兵模式、 proxy 端分区、官方 cluster 分区

标签:知识点,缓存,答题,20210304,拉勾,过期,Redis,key
来源: https://www.cnblogs.com/huangwenjie/p/14480560.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有