我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Redis系列(七)Redis面试题

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Redis系列(七)Redis面试题

Redis系列(七)Redis面试题

Redis 面试题

Redis 系列:

  1. Redis系列(一)Redis入门
  2. Redis系列(二)Redis的8种数据类型
  3. Redis系列(三)Redis的事务和Spring Boot整合
  4. Redis系列(四)Redis配置文件和持久化
  5. Redis系列(五)发布订阅模式、主从复制和哨兵模式
  6. Redis系列(六)Redis 的缓存穿透、缓存击穿和缓存雪崩
  7. Redis系列(七)Redis面试题
  8. Redis命令参考

1、什么是 Redis?有什么特点?

Redis 是一款开源,高性能的 key-value 的非关系型数据库。
特点
1)支持持久化,可以将内存中的数据持久化到磁盘,重启可以再次从磁盘中加载使用;
2)支持多种数据结构;
3)支持数据的备份:主从模式的备份;
4)高性能,读速度达 11 万次/秒,写速度达到 8.1 万次/秒
5)支持事务。

2、说说 Redis 的数据类型

一共 8 种
5 种基本数据类型:String、Hash、List、Set、Zset
3 种特殊类型:geospatial、hyperloglog、bitmap

3、Redis 和 Memcache 的区别?

1)Memcache 数据都存储在内存中,断电即失,数据不能超过内存大小;而 Redis 的数据可以持久化到硬盘。
2) Memcache 只支持简单的字符串,Redis 有丰富的数据结构;
3)底层实现方式不一样,Redis 自行构建了 VM 机制,速度更快。

4、Redis 是单进程单线程的?

Redis 将数据放在内存中,单线程执行最高,多线程执行反而需要进行 CPU 上下文切换,这是个耗时操作,单线程效率最高。

5、说说 Redis的持久化

Redis 提供了两种持久化机制:RDB 和 AOF

RDB 持久化机制指的是,用数据集快照的方式记录 Redis 数据库的所有键值对,在某个时间点写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复的目的。
优点
1)只有一个文件 dump.rdb 方便持久化;
2)容灾性好,一个文件可以保存到安全的磁盘;
3)性能最大化,Redis 会单独创建(fork)一个子进程进行持久化,主进程不进行任何 IO 操作,保证了性能;
4)在数据较多时,比 AOF 的启动效率高。
缺点
最后一次持久化的数据可能会丢失。

AOF 持久化,是以独立日志的方式记录每次写命令,并在 Redis 重启时重新执行 AOF 文件中的命令以达到恢复数据的目的。AOF 主要解决数据持久化的实时性。
优点
1)数据安全,配置 appendfsync 属性,可以选择不同的同步策略;
2)自动修复功能, redis-check-aof工具可以解决数据一致性问题;
缺点
1)AOF 文件比 RDB 文件大,且恢复速度慢;
2)数据多时,效率低于 RDB。

6、Redis 的主从复制

主从复制值的是将一台 Redis 服务器的数据复制其他 Redis 服务器,前者称之为主节点,后者称之为从节点。

主从复制的作用
1)数据冗余:主从复制实现了数据的热备份;
2)故障修复:当主节点出现故障后,从节点还可以提供服务,实现快速的故障修复。
3)负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写操作,从节点提供读操作,实现负载均衡,提高并发量;
4)高可用的基石:主从复制是哨兵模式的基础。

复制原理
从节点启动成功连接到主节点后,会发送一个 sync 的同步命令。主节点接收到命令之后,启动后台的存盘进程,收集所有修改数据库的命令,在后台执行完毕后将整个数据文件传送到从节点,完成一次完全同步。
全量复制:从节点在接收到了数据文件后,将其存盘文件加载都内存中;
增量复制:主节点继续将新收集到修改命令传递给从节点,完成同步。

7、说说哨兵模式

哨兵模式是为了解决手动切换主节点的问题。Redis 提供了哨兵的命令,哨兵是一个独立的进程。哨兵能够后台监控主节点是否故障,如果故障需要将从节点选举为主节点。

其原理是哨兵通过发送命令,等待 Redis 服务器的响应,从而监控多个 Redis 节点。

当只有一个哨兵时,还是可能会出现问题的,比如哨兵自己挂掉。为此,可以使用多哨兵模式,多个哨兵之间相互监控。当主节点宕机了,哨兵1先检测到这个结果,系统并不会马上进行 failover 【故障转移】的过程。仅仅是哨兵1认为主节点不可用的现象称之为主观下线。当其余的哨兵也检测到主节点不可用之后,哨兵之间会进行一次投票选举从节点中的一个作为新的主节点,这个过程称之为客观下线

哨兵模式的优点
1)基于主从复制,高可用;
2)主从可以切换,进行故障转移,系统可用性好;
3)哨兵模式是主从模式的升级版,手动到自动,更加健壮。

哨兵模式的缺点
1)不方便在线扩容;
2)实现哨兵模式需要很多的配置。

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

缓存穿透:

概念:用户需要查询一个数据,缓存中没有,也就是没有命中,于是向数据库中发起请求,发现也没有。当用户很多的时候,缓存都没有命中,于是都去请求数据库,这给数据库造成很大的压力。

解决方案

  • 布隆过滤器:是一种数据结构,对所有可能查询的参数以 hash 方式存储,先在控制层进行校验,不符合则丢弃,避免了过多访问数据库。
  • 缓存空对象:当存储层没有命中时,即使返回空对象也将其缓存起来。(意味着更多的空间存储,即使设置了过期时间,缓存和数据库还是有段时间数据不一致。)

缓存击穿:

概念:当一个 key 非常热点时,在不断扛高并发,集中对这个热点数据进行访问,当这个 key 失效的瞬间,请求直接到达数据库,给数据库瞬间的高压力。

解决方案

  • 设置热点数据永不过期
  • 加分布式锁:保证每个 key 同时只有一个线程去查询后端服务。

缓存雪崩:

概念:某个时间段,缓存集中失效

解决方案

  • 增加 Redis 集群的数量
  • 限流降级:在缓存失效后,通过加锁和队列来控制数据库写缓存的线程数量
  • 数据预热:正式部署之前,将数据预先访问一遍,让缓存失效的时间尽量均匀

9、Redis 的使用场景

1)会话缓存:如 单点登录,使用 Redis 模拟 session,SSO 系统生成一个 token,将用户信息存到 Redis 中,并设置过期时间;
2)全页缓存
3)作为消息队列平台
4)排行榜和计数器
5)发布/订阅:比如聊天系统
6)热点数据:比如ES中搜索的热词

10、Redis 缓存如何保持一致性

读数据的时候首先去 Redis 中读取,没有读到再去 MySQL 中读取,读取都数据更新到 Redis 中作为下一次的缓存。

写数据的时候会产生数据不一致的问题。无论是先写入 Redis 再写入 MySQL 中,还是先写入 MySQL 再写入 Redis 中,这两步操作都不能保证原子性,所以会出现 Redis 和 MySQL 中数据不一致的问题。

无论采取何种方式都不能保证强一致性,如果对 Redis 中的数据设置了过期时间,能够保证最终一致性,对架构的优化只能降低发生的概率,不能从根本上避免不一致性。

更新缓存的两种方式:删除失效缓存、更新缓存
更新缓存和数据库有两种顺序:先数据库后缓存、先缓存后数据库
两两组合,分为四种更新策略。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Redis系列(七)Redis面试题

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Redis系列(七)Redis面试题

Redis 面试题 Redis 系列:Redis系列(一)Redis入门Redis系列(二)Redis的8种数据类型Redis系列(三)Redis的事务和Spring Boot整合Redis系列(四)Redis配置文件和持久化Redis系列(五)
Redis系列(七)Redis面试题
2018-02-10

Redis面试问题

https://blog.csdn.net/Butterfly_resting/article/details/89668661 本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Mem
Redis面试问题
2014-11-14

Redis系列(一):小试牛刀

随着互联网的高速发展,传统的关系数据库(如MySQL、Microsoft SQL Server等)已不能满足日益增长的业务需求,如商品秒杀、抢购等及时性非常强的功能,随着应用高并发的访问,会造成系统数据库崩溃,为了解决此种情况,需要引用一个缓存中间件,市面上比
Redis系列(一):小试牛刀
2018-12-10

Redis系列(一)Redis入门

NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。Redis 系列:1. Redis系列(一)Redis入门2.
Redis系列(一)Redis入门
2020-02-02

Redis 基本认识(笔试、面试题)

一、Redis1、简介【官方简介地址:】 https://redis.io/topics/introduction  看不懂不要紧,先混个眼熟,慢慢来...。【初步认识 Redis:】 Redis is an open source (BSD li
Redis 基本认识(笔试、面试题)
2018-04-18

Redis必备面试题《难点篇》

Date:2019-11-12读前思考:    redis每次必问的问题,在大脑里面先回想一下,能否答出一二?      题1:Redis雪崩了解么? 题2:了解Redis缓存穿透和击穿么? 题3:你知道Redis缓存雪崩、穿透和击穿 的三者区别吗,可以结合具
2014-08-28

java面试题如何监控redis

本文介绍了Java中监控Redis的多种方法,包括使用客户端库、第三方工具、JMX、指标收集库和日志记录。关键指标包括连接数、内存使用量、命中率、命令执行时间、慢查询和键过期。最佳实践包括设置警报、定期检查、优化性能和使用Sentinel或Cluster。通过监控Redis,Java程序员可以确保其稳定性和性能。
java面试题如何监控redis
2024-04-02

Redis面试问题2.0 敖丙版

小伙子您好,看你简历上写了你项目里面用到了Redis,你们为啥用Redis? 心里忍不住暗骂,这叫啥问题,大家不都是用的这个嘛,但是你不能说出来。 认真回答道:帅气迷人的面试官您好,因为传统的关系型数据库如Mysql已经不能适用所有的场景了,比如秒杀的库存扣减
Redis面试问题2.0 敖丙版
2018-03-16

Redis必备面试题《基础篇》

Date:2019-11-12读前思考:  面试官会问什么样的问题?  所问的问题背后真实的套路是什么?  喜欢问Redis哪些问题?  如何顺畅回答面试问的问题?吊打面试官。 1、什么是Redis? 2、Redis相比memcached有哪些优势? 3、Re
2015-12-04

redis系列之-

什么是主从复制Redis的主从复制机制是指可以让从服务器(slave)能精确复制主服务器(master)的数据,如下图所示:          或者           主从复制的方式和工作原理工作方式:Redis主从复制主要有两种模式:完整重同步(full
redis系列之-
2017-12-10

Redis有哪些高频面试题

本篇内容介绍了“Redis有哪些高频面试题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、说说 Redis 都有哪些应用场景?缓存:这应该
2023-06-04

Redis经典面试题有哪些

本篇内容介绍了“Redis经典面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、什么是Redis?简述它的优缺点?Redis本质
2023-06-02

编程热搜

目录