conanan's blog conanan's blog
首页
关于
  • 分类
  • 标签
  • 归档
  • Java
  • Java Web
  • 工具

    • Maven
  • MySQL
  • Redis
  • Git
  • Vim
  • Nginx
  • Docker
GitHub

Evan Xu

前端界的小学生
首页
关于
  • 分类
  • 标签
  • 归档
  • Java
  • Java Web
  • 工具

    • Maven
  • MySQL
  • Redis
  • Git
  • Vim
  • Nginx
  • Docker
GitHub
  • 基础

    • 简介
    • string
    • hash
    • list—顺序双向链表
    • set—大量数据
    • sorted_set—排序的大量数据
    • bitmap—位图
    • HyperLogLog
    • GEO—地理坐标
    • stream
    • 通用指令
    • Jedis
  • 高级

  • 集群

  • Redis面试
    • 什么是 Redis?使用 Redis 的好处?
    • ~~Redis 相比 Memchached 的区别、优势~~
    • Redis 是单进程单线程的吗?为何还那么快那么高效
    • Redis 多线程是什么多线程?默认开启吗?你们生产中用了吗?
    • 你的项目中 Redis 的应用场景
    • Redis 的 5 种基础数据类型和 6 个数据结构
    • BitMap、HyperLogLog、GEO、Stream 有接触过吗?什么时候用这些特殊数据结构?
    • 跳表又是什么,画一下?为什么使用跳表?为什么不用红黑树?全局 Hash 表又是什么?如何扩容的?什么是渐进式 rehash?Redis 怎么做到的?IO 多路复用是什么?多路是什么?复用了什么?
    • 一个 String 类型的值能存储最大容量是多少
    • 自定义过 Redis 数据类型吗?自定义过 Redis 命令吗?
    • "🔥【场景】分布式数据库主键 ID"(计数器)—string
    • "🔥【场景】密码错误限制"—string
    • "🔥【场景】实现用户登录会话"—hash
    • "🔥【场景】电商网站购物车设计与实现"—hash
    • "🔥【场景】限量抢购"—hash
    • "🔥【场景】朋友圈点赞顺序列表"—list
    • "🔥【场景】微博关注列表"—list
    • "🔥【场景】最新的新闻或资讯"—list
    • "🔥【场景】唯一计数器—网站访问量去重"—set(PV、UV、IP)
    • "🔥【场景】网站黑、白名单"—set
    • "🔥【场景】投票—点赞的多元化"—set
    • "🔥【场景】社交关系"—set
    • "🔥【场景】共同好友、关联搜索"
    • "🔥【场景】排行榜"—zset
    • "🔥【场景】时间线排序"—zset
    • Redis 的持久化机制?各自优缺点?你们是怎么选的?
    • AOF 什么时候重写?为什么重写?
    • 为什么 Redis 没有实现 WAL 机制?
    • Redis 主从是什么?主从从又是什么?
    • 为什么主从从可以减少主库压力?从库可以设置可写吗?从库可写会带来什么问题?
    • 🔥 主从什么时候会导致数据丢失?主从不一致?
    • 主从复制用到了哪种日志?
    • 主从复制过程说下。主从复制什么时候增量,什么时候全量?
    • 主从复制第一次连接时,网络中断了怎么办?
    • Redis 十万并发能支撑住吗?如何支撑十万以上并发?为什么操作大对象支持不了十万并发?
    • 你说虚拟节点,说下如何实现?
    • Codis 了解吗?
    • 你们的 Redis 集群方案是什么?
    • Redis 是如何保证高可用的?哨兵机制了解吗?
    • 什么是主观下线什么是客观下线?选主的四个筛选条件优先级的条件依次递减分别是什么?打分又是什么?如何打分?
    • 数据倾斜知道吗,如何解决?
    • 分布式锁了解过吗?讲讲分布式锁实现原理?
    • 分布式锁需要注意哪四个问题?
    • Redisson 源码看过吗?它是如何实现的分布式锁?
    • Lua 脚本保证原子性吗?
    • 🔥 Redis 事务说下?事务 vs pipleline
    • 🔥 缓存雪崩、缓存击穿、缓存穿透说下?如何解决?
    • 🔥 布隆过滤器又是什么?能手写个布隆过滤器吗 ?布谷鸟过滤器?
    • 🔥 缓存预热?
    • 🔥 如何淘汰数据的?分别是哪八种策略?
    • Redis 对 lru 做了什么改变吗?lfu 又是什么?Redis 做了什么优化?
    • 缓存污染知道是什么吗?
    • 🔥 如何解决数据库和缓存数据不一致问题?双写一致性问题?
    • Pika 知道吗?Tendis 和它的区别 ?
    • 如何实现一个 Key 千万并发?(Zoom 面试题)
    • Redis 6 还有什么新特性?
    • Redis 的同步机制
    • Redis 常见性能问题和解决方案
    • Redis 的过期删除策略(回收策略、淘汰策略)
    • Pipline 有什么好处?为什么要用 Pipline?
    • 是否使用过 Redis 集群?集群的原理?
    • Redis 集群方案什么情况下会导致整个集群不可用?
    • Redis 集群之间是如何复制的?
    • Redis 的主从复制模型是怎样的?
    • Redis 集群会有写操作丢失吗?为什么?
    • Redis 哈希槽?
    • Redis 如何设置密码及验证密码?
    • Redis 支持的 Java 客户端哪些?官方推荐哪个?
    • Jedis 与 Redisson 对比有什么优缺点?
  • Redis
conanan
2021-06-21

Redis面试

# 基础

# 什么是 Redis?使用 Redis 的好处?

# Redis 相比 Memchached 的区别、优势

# 线程模型

# Redis 是单进程单线程的吗?为何还那么快那么高效

  • 无论什么版本,工作线程只有一个!

  • 6.x 高版本出现了 IO 多线程

  • 单线程,保证 Redis 命令的原子操作。加入 IO 多线程后,并行执行输入输出,提高执行速度,更好利用多核优势

    • 学习系统IO课,epoll操作,内核缓存、内核缓冲区
    • mmap

# Redis 多线程是什么多线程?默认开启吗?你们生产中用了吗?

# 数据类型、数据结构、场景

# 你的项目中 Redis 的应用场景

  • 从5 种基础数据类型说
  • 基本上就是用于缓存,一般不会用于数据库!
  • 使用 Redis 为的是解决 HTTP 的无状态(Token等);服务后台服务的无状态;
  • 项目中的哪些数据结构
  • 单机锁;多机分布式锁;无锁!

# Redis 的 5 种基础数据类型和 6 个数据结构

# BitMap、HyperLogLog、GEO、Stream 有接触过吗?什么时候用这些特殊数据结构?

# 跳表又是什么,画一下?为什么使用跳表?为什么不用红黑树?全局 Hash 表又是什么?如何扩容的?什么是渐进式 rehash?Redis 怎么做到的?IO 多路复用是什么?多路是什么?复用了什么?

# 一个 String 类型的值能存储最大容量是多少

"数据最大存储量512MB,也不可能存储这么大的值!"

# 自定义过 Redis 数据类型吗?自定义过 Redis 命令吗?

# "🔥【场景】分布式数据库主键 ID"(计数器)—string

# "🔥【场景】密码错误限制"—string

# "🔥【场景】实现用户登录会话"—hash

# "🔥【场景】电商网站购物车设计与实现"—hash

# "🔥【场景】限量抢购"—hash

# "🔥【场景】朋友圈点赞顺序列表"—list

# "🔥【场景】微博关注列表"—list

# "🔥【场景】最新的新闻或资讯"—list

# "🔥【场景】唯一计数器—网站访问量去重"—set(PV、UV、IP)

# "🔥【场景】网站黑、白名单"—set

# "🔥【场景】投票—点赞的多元化"—set

# "🔥【场景】社交关系"—set

# "🔥【场景】共同好友、关联搜索"

# "🔥【场景】排行榜"—zset

# "🔥【场景】时间线排序"—zset

# 持久化

# Redis 的持久化机制?各自优缺点?你们是怎么选的?

  • RDB,快照
  • AOF,每秒刷盘一次命令。aof日志可以得到所有命令,文件体积变大,需要 aof 重写当前内存中指令!4.x 新版本重写直接把 RDB 放到 AOF 文件,后续命令以 aof 命令追加
  • 主从同步也算持久化

原理:

  • fork + copyonwrit

# AOF 什么时候重写?为什么重写?

# 为什么 Redis 没有实现 WAL 机制?

# 集群

# Redis 主从是什么?主从从又是什么?

# 为什么主从从可以减少主库压力?从库可以设置可写吗?从库可写会带来什么问题?

# 🔥 主从什么时候会导致数据丢失?主从不一致?

  • Redis 默认是弱一致性,异步的同步

  • 锁不能用主从结构,可以采用 单实例、分片集群、redlock。逻辑上使用 redisson 即可!

  • 配置中提供了必须有多少个 client 连接才能同步,可以配置同步因子,趋向于强一致性

  • wait 2 0 小心

    最后2点有点违背 redis 的初衷

# 主从复制用到了哪种日志?

# 主从复制过程说下。主从复制什么时候增量,什么时候全量?

# 主从复制第一次连接时,网络中断了怎么办?

# Redis 十万并发能支撑住吗?如何支撑十万以上并发?为什么操作大对象支持不了十万并发?

# 你说虚拟节点,说下如何实现?

# Codis 了解吗?

# 你们的 Redis 集群方案是什么?

# Redis 是如何保证高可用的?哨兵机制了解吗?

# 什么是主观下线什么是客观下线?选主的四个筛选条件优先级的条件依次递减分别是什么?打分又是什么?如何打分?

# 数据倾斜知道吗,如何解决?

# 分布式锁了解过吗?讲讲分布式锁实现原理?

# 分布式锁需要注意哪四个问题?

# Redisson 源码看过吗?它是如何实现的分布式锁?

# Lua 脚本保证原子性吗?

# 🔥 Redis 事务说下?事务 vs pipleline

  • Redis 单指令操作是原子的

  • pipleline 是一个客户端的指令集合(上车后统一发车)。节省网络开销!

  • Redis 事务执行时期是原子的,失败的就是失败,其他继续执行,没有回滚,需要手动设置!和 MySQL 完全不一样

    在 6.0 后,由于 IO 多线程,所以发送到 Redis 服务器的命令可能是穿插的,但是!执行的时候,是根据 Redis 客户端来区分,来执行原子事务!

    所以,尽量不要使用 Redis 的事务

# 其他

# 🔥 缓存雪崩、缓存击穿、缓存穿透说下?如何解决?

  • "缓存雪崩—大量key"
  • "缓存击穿—单个key"
  • "缓存穿透—没有的key—网警"

以上问题,核心就是避免对 DB 的无效、重复请求

# 🔥 布隆过滤器又是什么?能手写个布隆过滤器吗 ?布谷鸟过滤器?

# 🔥 缓存预热?

  • "缓存预热"

  • 如果是新的系统,总有无法预料的热点数据,所以必定会发生 缓存雪崩、缓存击穿、缓存穿透问题

# 🔥 如何淘汰数据的?分别是哪八种策略?

  • "🔥过期键删除策略"
  • "🔥逐出策略"——也称作淘汰策略,内存空间不足时产生

# Redis 对 lru 做了什么改变吗?lfu 又是什么?Redis 做了什么优化?

# 缓存污染知道是什么吗?

# 🔥 如何解决数据库和缓存数据不一致问题?双写一致性问题?

  • 分布式事务!慎重选择,意义不大,性能太差!除非读多写少时!

  • 首先明确一个问题!但单机下也不一定完全保证一致性!计算机任何地方都有缓存!除非为了一致性牺牲性能!

  • 如何解决呢?看如下案例:

    • 先删除 Redis,后更新 DB。但是容易发生那3个缓存问题
    • Redis 是缓存,更倾向于有时差,不应该太过于追求强一致性。还是要减少 DB 操作。
    • 🔥【推荐】使用 canal,同步 mysql 的 binlog。canal 能模拟为假的 mysql
    • 通过 MQ 来,每次只发送消息,具体后续操作根据业务来消费!CQRS!了解!

# Pika 知道吗?Tendis 和它的区别 ?

# 如何实现一个 Key 千万并发?(Zoom 面试题)

# Redis 6 还有什么新特性?

# 哈哈哈

# Redis 的同步机制

# Redis 常见性能问题和解决方案

# Redis 的过期删除策略(回收策略、淘汰策略)

# Pipline 有什么好处?为什么要用 Pipline?

# 是否使用过 Redis 集群?集群的原理?

# Redis 集群方案什么情况下会导致整个集群不可用?

# Redis 集群之间是如何复制的?

# Redis 的主从复制模型是怎样的?

# Redis 集群会有写操作丢失吗?为什么?

# Redis 哈希槽?

# Redis 如何设置密码及验证密码?

# Redis 支持的 Java 客户端哪些?官方推荐哪个?

# Jedis 与 Redisson 对比有什么优缺点?

编辑
上次更新: 2021/06/21, 15:45:42
集群

← 集群

最近更新
01
线程生命周期
07-06
02
线程安全理论
06-24
03
并发简史
06-24
更多文章>
Theme by Vdoing | Copyright © 2019-2021 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×