最近整理一份关于Redis常见面试题的,也会根据自己的经验, 标注一些出现的概率,最高5颗★出现的概率最高。比如这样:

Redis 最适合的场景, 可以简单的说说吗?
出现概率: ★★★★

整体目录大概如下:

目录

  • 一、Redis基础知识

    • 1、什么是 Redis, 有哪些优缺点?
    • 2、Redis 最适合的场景, 可以简单的说说吗?
    • 3、Redis 相比 Memcached 有哪些优势?
    • 4、一个字符串类型的值能存储最大容量是多少?
    • 5、Redis 读写分离
  • 二、数据结构
    • 1、Redis的数据类型有哪些?
    • 2、说说 Redis 哈希槽的概念?
    • 3、Hash如何实现O(1)的查询和设置速度, 以及扩容原理
    • 4、布隆过滤器
  • 三、事务
    • 1、怎么理解 Redis 事务?
    • 2、Redis事务执行过程
    • 3、Redis事务的一些使用场景
    • 4、Redis事务与Redis pipeline的区别
    • 5、集群模式下Redis事务如何保证原子性
  • 四、Redis数据持久化
    • 1、为什么 Redis 需要把所有数据放到内存中?
    • 2、Redis如何做持久化的?
    • 3、Redis key 的过期时间和永久有效分别怎么设置?
  • 五、Redis集群
    • 1、Redis 是单进程单线程的?
    • 2、是否使用过 Redis 集群,集群的原理是什么?
    • 3、可以简单说说你对Redis Sentinel的理解
    • 4、Redis Sentinal和Redis Cluster的区别
    • 5、Redis 的同步机制了解么?
    • 6、Redis 集群最大节点个数是多少?
  • 六、Redis淘汰策略
    • 1、Redis过期键的删除策略?
    • 2、你可以简单聊聊Redis内存淘汰机制(回收策略)
  • 七、Redis分布式锁
    • 1、你知道实现实现分布式锁有哪些方案?
  • 八、Redis缓存问题
    • 1、Redis缓存雪崩
    • 2、Redis缓存击穿
    • 3、Redis缓存穿透
    • 4、缓存预热
    • 5、缓存降级
  • 九、运维和部署
    • 1、Redis 如何设置密码及验证密码?
    • 2、Redis 如何做内存优化?

一般来讲在面试当中, 关于Redis相关的面试题频率出现比较高的几个关键词是适合哪些场景、数据结构、hash实现原理和如何扩容、如何做持久化、关系型数据库和非关系数据库对比等等。 把这几个点问完基本也差不多10~20分钟了(一般一轮面试1小时左右), 基本这些可以让面试官对你的Redis知识有一定的了解了。

也欢迎关注我 回复: 资料 免费获取最新Redis面试题(含答案)。

希望这篇文章可以帮助大家, 也希望大家都能找到的好工作。

Redis 是单进程单线程的?

出现概率: ★★★★

大家所熟知的 Redis 确实是单线程模型,指的是执行 Redis 命令的核心模块是单线程的,而不是整个 Redis 实例就一个线程,Redis 其他模块还有各自模块的线程的。

下面这个解释比较好:

同时Redis 采用网络 I/O 多路复用技术,来保证在多连接的时候系统的高吞吐量。关于 I/O 多路复用(又被称为“事件驱动”),首先要理解的是,操作系统为你提供了一个功能,当你的某个 socket 可读或者可写的时候,它可以给你一个通知。这样当配合非阻塞的 socket 使用时,只有当系统通知我哪个描述符可读了,我才去执行 read 操作,可以保证每次 read 都能读到有效数据而不做纯返回 -1 和 EAGAIN 的无用功,写操作类似。

目前多路复用主要有三种技术:select,poll,epoll。epoll 是最新的也是目前最好的多路复用技术。

采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络 I/O 的时间消耗),且 Redis 在内存中操作数据的速度非常快,也就是说内存内的操作不会成为影响 Redis 性能的瓶颈,基于这两点 Redis 具有很高的吞吐量。

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

出现概率: ★★★

Redis Cluster 是 在 3.0 版本正式推出的高可用集群方案,相比Redis Sentinel,Redis Cluster方案不需要额外部署Sentinel集群,而是通过集群内部通信实现集群监控,故障时主从切换;同时,支持内部基于哈希实现数据分片,支持动态水平扩容。

  • Redis集群有多个master,可以减小访问瞬断问题的影响;若集群中有一个master挂了,正好需要向这个master写数据,这个操作需要等待一下;但是向其他master节点写数据是不受影响的。
  • Redis集群有多个master,可以提供更高的并发量;
  • Redis集群可以分片存储,这样就可以存储更多的数据;

将整个数据集按照一定规则分配到多个节点上,称为数据分片,Redis Cluster采用的分片方案是哈希分片, 基本原理如下: Redis Cluster首先定义了编号0 ~ 16383的区间,称为槽,所有的键根据哈希函数映射到0 ~ 16383整数槽内,计算公式:slot=CRC16(key)&16383。每一个节点负责维护一部分槽以及槽所映射的键值数据。

#可以简单说说你对Redis Sentinel的理解

出现概率: ★★★

Redis Sentinel是官方从Redis 2.6版本提供的高可用方案,在Redis主从复制集群的基础上,增加Sentinel集群监控整个Redis集群。当Redis集群master节点发生故障时,Sentinel进行故障切换,选举出新的master,同时Sentinel本身支持高可用集群部署。

#Redis Sentinal和Redis Cluster的区别

出现概率: ★★★

Redis Sentinal和Redis Cluster的区别主要在于侧重点不同:

  • Redis Sentinal主要聚焦于高可用,在master宕机时会自动将slave提升为master,继续提供服务。
  • Redis Cluster主要聚焦于扩展性,在单个redis内存不足时,使用Cluster进行分片存储。

#Redis 的同步机制了解么?

出现概率: ★★★

主从同步。第一次同步时,主节点做一次bgsave,并同时将后续修改操作记录到内存buffer,待完成后将rdb文件全量同步到复制节点,复制节点接受完成后将rdb镜像加载到内存。加载完成后,再通知主节点将期间修改的操作记录同步到复制节点进行重放就完成了同步过程。

全备份过程中,在slave启动时,会向其master发送一条SYNC消息,master收到slave的这条消息之后,将可能启动后台进程进行备份,备份完成之后就将备份的数据发送给slave,初始时的全同步机制是这样的:

#Redis 集群最大节点个数是多少?

出现概率: ★★★

这个比较偏, 知道的人不多, 如果你可以答出最大节点数,然后给出解释, 估计面试官的好感度, 会蹭蹭的往上涨。

16384 个。这是因为Redis 集群并没有使用一致性hash,而是引入了哈希槽的概念。Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽,集群的每个节点负责一部分hash槽。

但为什么哈希槽的数量是16384(2^14)个呢?

在redis节点发送心跳包时需要把所有的槽放到这个心跳包里,以便让节点知道当前集群信息,16384=16k,在发送心跳包时使用char进行bitmap压缩后是2k(2 * 8 (8 bit) * 1024(1k) = 16K),也就是说使用2k的空间创建了16k的槽数。

虽然使用CRC16算法最多可以分配65535(2^16-1)个槽位,65535=65k,压缩后就是8k(8 * 8 (8 bit) * 1024(1k) =65K),也就是说需要需要8k的心跳包,Redis作者认为这样做不太值得;并且一般情况下一个redis集群不会有超过1000个master节点,所以16k的槽位是个比较合适的选择。

感谢阅读,更多的java课程学习路线,笔记,面试等架构资料,点赞收藏+评论转发+关注我之后私信我【资料】即可获取免费资料!

2022年Redis最新面试题- Redis集群相关推荐

  1. 2022年Redis最新面试题- Redis分布式锁

    最近整理一份关于Redis常见面试题的,也会根据自己的经验, 标注一些出现的概率,最高5颗★出现的概率最高.比如这样: Redis 最适合的场景, 可以简单的说说吗? 出现概率: ★★★★ 整体目录大 ...

  2. 2022年Redis最新面试题 - Redis缓存问题

    缓存问题 分布式缓存 Redis缓存雪崩 Redis缓存击穿 Redis缓存穿透 缓存预热 缓存降级 #Redis缓存雪崩 出现概率: ★★★★★ 这个在Redis面试的题目中算是出镜率特别高的问题了 ...

  3. 2022年Redis最新面试题

    2022年Redis最新面试题 一.Redis基础知识 1.什么是 Redis, 有哪些优缺点? 2.Redis 最适合的场景, 可以简单的说说吗? 3.Redis 相比 Memcached 有哪些优 ...

  4. 2022年MySQL最新面试题

    2022年MySQL最新面试题目录 前言 一.数据库基础知识 0.概要 1.平时MySQL主要用哪个版本 2.数据库三大范式是什么 3.MySQL有关权限的表都有哪几个 4.MySQL的binlog有 ...

  5. Redis系列教程(五):Redis哨兵、复制、集群的设计原理,以及区别

    前一篇文章高并发架构系列:Redis为什么是单线程.及高并发快的3大原因详解谈了Redis高并发快的3个原因,本篇主要谈Redis的高可用,两篇合起来就可以把redis的高并发和高可用搞清楚了. 谈到 ...

  6. Redis系列教程(二):详解Redis的存储类型、集群架构、以及应用场景

    高并发架构系列 高并发架构系列:数据库主从同步的3种一致性方案实现,及优劣比较 高并发架构系列:Spring Cloud的核心成员.以及架构实现详细介绍 高并发架构系列:服务注册与发现的实现原理.及实 ...

  7. Redis的高可用详解:Redis哨兵、复制、集群的设计原理,以及区别

    谈到Redis服务器的高可用,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要哨兵和复制. 哨兵(Sentinel):可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能. ...

  8. Redis 主从复制、哨兵和集群区别

    转自:Redis 主从复制.哨兵和集群区别,更优体验:http://www.kongzid.com/ 目录 1.主从复制(Replication) 1.1 主从数据库 1.2 主从复制的特点 1.3 ...

  9. SpringBoot使用Redis 数据访问(单点、集群、哨兵、连接池、Pipline、分布式框架Redisson、解决方案)

    目录 Redis 文献资料 用Redis编程 Redis模块API 教程和常见问题解答 管理 嵌入式和物联网 故障排除 Redis集群 其他基于Redis的分布式系统 在SSD和永久性存储器上进行Re ...

最新文章

  1. Emacs支持gomodifytags
  2. Hibernate学习笔记--第一个Hibernate框架程序
  3. 巨蟒python全栈开发-第11阶段 ansible_project2
  4. 抛硬币直到连续若干次正面
  5. 介绍一个统计各个网站访问时长的Chrome扩展 - Rooster
  6. Ogre 3d 工具集
  7. 计算机组成原理中机器码怎么看,《计算机组成原理》汇编指令机器码对应列表...
  8. oracle 命令行执行sql文件
  9. paip.配置ef_unified_filter() failed ext_filter_module mod_ext_filter.so apache 错误解决
  10. Win10的投屏功能无法使用问题解决思路
  11. 5G十大细分应用场景研究报告
  12. Presenting view controllers on detached view controllers is discouraged
  13. 4.46-47访问控制4/5
  14. 初学Java 从0-1创建Spring boot+Mybatis - plus+Swagger2+Mysql(代码生成器)
  15. Allegro PCB Design GXL (legacy) 将brd文件另存为低版本文件
  16. B站视频内容复利,品牌投放中小UP主的营销机遇在哪?
  17. Sqoop1和Sqoop2的刨析对比
  18. 适合环保工程行业的项目管理软件
  19. 软件开发-BS与CS架构
  20. 「原创」大数据岗位总结和相关书籍推荐

热门文章

  1. 电脑屏幕显示不全怎么办
  2. 帮助家长找到适合孩子的优质应用
  3. S7-200SMART_MODBUS RTU通信轮询中实现插队写入或条件写入的具体方法示例(1)
  4. conda 安装yaml环境中的各种坑
  5. PyQt5简单仪表盘
  6. 智能手环Gear Fit评测:看上去很美好
  7. Unity 基础 之 代码动态监听UI交互组件汇总
  8. 【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(四)
  9. 十六、Lua 文件 I/O的学习
  10. 【云栖大会】阿里云助力实现“工业互联,云上智造”