2022年Redis最新面试题 – Redis数据持久化

2022年Redis最新面试题 - Redis数据持久化

概要

  • 为什么 Redis 需要把所有数据放到内存中?
  • Redis如何做持久化的?
  • Redis key 的过期时间和永久有效分别怎么设置?

#为什么 Redis 需要把所有数据放到内存中?

出现概率:

Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。所以Redis具有快速和数据持久化的特性。如果不将数据放到内存中,磁盘的I/O速度会严重影响redis的性能。在内存越来越便宜的今天,redis将会越来越受欢迎。不过也可以设置了最大使用的内存, 则数据已有记录数达到内存限值后将不能继续插入新值。

#Redis如何做持久化的?

出现概率:

bgsave做镜像全量持久化,AOF做增量持久化。因为bgsave会耗费较长时间,不够实时,在停机的时候会导致大量丢失数据,所以需要AOF来配合使用。在redis实例重启时,优先使用AOF来恢复内存的状态,如果没有AOF日志,就会使用RDB文件来恢复。

如果再问AOF文件过大恢复时间过长怎么办?你告诉面试官,Redis会定期做AOF重写,压缩AOF文件日志大小。如果面试官不够满意,再拿出杀手锏答案,Redis4.0之后有了混合持久化的功能,将bgsave的全量和AOF的增量做了融合处理,这样既保证了恢复的效率又兼顾了数据的安全性。这个功能甚至很多面试官都不知道,他们肯定会对你刮目相看。

如果对方追问那如果突然机器掉电会怎样?取决于AOF日志sync属性的配置,如果不要求性能,在每条写指令时都sync一下磁盘,就不会丢失数据。但是在高性能的要求下每次都sync是不现实的,一般都使用定时sync,比如1s1次,这个时候最多就会丢失1s的数据。

1)、RDB工作原理

回复: redis, 免费获取最新Redis面试题(含答案)。

既然说RDB是Redis中数据集的时间点快照,在Redis内完成RDB持久化的方法有rdbSave和rdbSaveBackground两个函数方法(源码文件rdb.c中),先简单说下两者差别:

  • rdbSave:是同步执行的,方法调用后就会立刻启动持久化流程。由于Redis是单线程模型,持久化过程中会阻塞,Redis无法对外提供服务;
  • rdbSaveBackground:是后台(异步)执行的,该方法会fork出子进程,真正的持久化过程是在子进程中执行的(调用rdbSave),主进程会继续提供服务;

RDB持久化的触发必然离不开以上两个方法,触发的方式分为手动和自动。手动触发容易理解,是指我们通过Redis客户端人为的对Redis服务端发起持久化备份指令,然后Redis服务端开始执行持久化流程,这里的指令有save和bgsave。

整个持久化的过程中,主进程不进行任何 io 操作,全程都有子进程来完成,这就确保了极高的性能。如果需要进行大规模的数据恢复,且对数据恢复的完整性不是非常敏感,那么 rdb 方式要比 AOF 方式更加的高效,rdb 的缺点是最后一次持久化的数据可能会丢失。

2)、AOF 工作原理

AOF 持久化全称 append only file,以日志形式记录每个写操作,将 redis 执行过得所有写操作指令记录下来(读操作不记录)。只许追加文件但不可以改写文件,redis 启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写操作指令从前到后执行一次以完成数据的恢复工作。

AOF 默认保存的是 appendonly.AOF 文件,此文件具有可读性。

AOF 的工作原理其实类似于 mysql 的 binlog 日志语句复制。是以日志的形式记录服务器所处理的每一个写,删除操作,查询操作不会记录,以文本的方式进行记录,该文件具有可读性。

数据同步有三种同步策略:修改同步、每秒同步、不主动调用 fsync 同步。

AOF 优缺点

AOF 利用 appendfsync 持久化机制,异步操作每秒记录,数据完整性要高于 rdb 如果一秒宕机,有可能丢失 1 秒数据。相同的数据集而言 AOF 文件要远大于 rdb 文件。恢复速度要慢于 rdb,AOF 运行效率要慢于 rdb。每秒同步策略效率较好,不同步效率和 rdb 相同。

回复: redis, 免费获取最新Redis面试题(含答案)。

#Redis key 的过期时间和永久有效分别怎么设置?

出现概率:

EXPIRE 和 PERSIST 命令。Redis Expire 命令用于设置 key 的过期时间,key 过期后将不再可用。单位以秒计。 Redis PERSIST 命令用于移除给定 key 的过期时间,使得 key 永不过期。

127.0.0.1:6379> set name ‘漫步coding’ EX 100000OK127.0.0.1:6379> ttl name # ttl 查看key过期时间(integer) 99997127.0.0.1:6379> set brief ‘一个专注算法、数据库、架构、计算机网络的公众号’OK127.0.0.1:6379> ttl brief(integer) -1127.0.0.1:6379> PERSIST name(integer) 1127.0.0.1:6379> ttl name(integer) -1 # -1 表示永久有效127.0.0.1:6379>

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年6月13日 18:04
下一篇 2022年6月13日 18:04

相关推荐

  • 笔记本最好配置(目前笔记本最好的配置)

    本文主要讲的是笔记本最好配置,以及和目前笔记本最好的配置相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 笔记本电脑什么配置好? 01 CPU:这个主要取决于频率和…

    2022年11月26日
  • 非匿名指令新手十连怎么选?非匿名指令新手无限十连选择推荐

    非匿名指令新手十连怎么选?进入游戏之后大家能得到一个新手无限十连,可以帮大家抽到满意的角色,新手十连的选择小编在下面也会有分享,不知道如何选择的可以看看小编提供的攻略,了解新手十连…

    2022年11月25日
  • 5+3疫情防控从哪天开始算(辽宁疫情防控最新政策)

    最近有关国内各地的疫情大家也都有在持续关注,目前国内各地疫情隔离时间也根据二十条防控措施有了新的调整。那么,5+3疫情防控从哪天开始算?对于密接的5+3隔离时间计算大家还是比较关心…

    2022年11月25日
  • 蓝码怎么变绿码需要几天(蓝码怎么变绿码需要几天)

    大家都知道健康码的颜色有红码、绿码、黄码,近日湖南健康码上线“蓝码”,不少小伙伴发现自己健康码变蓝了,都想赶紧恢复绿码,那么蓝码怎么变绿码需要几天?下面小编为大家带来蓝码变绿码需要…

    2022年11月25日
  • 拼多多百亿补贴预售一般多久发货(拼多多百亿补贴预售)

    拼多多里面有很多优惠活动,其中百亿补贴活动非常火爆,一些里面的东西价格比别的平台便宜,质量也有保障,还有预售的活动,那么拼多多百亿补贴预售一般多久发货?下面小编为大家带来拼多多百亿…

    2022年11月25日
  • 北京疫情多久能解除封控(北京疫情还要多久结束)

    最近一段时间北京疫情形势备受关注,马上就要到年底了,不少人想要去北京办事,。都非常关注当地疫情相关政策,那么 北京疫情多久能解除封控?北京疫情什么时候恢复正常生活?下面小编为大家带…

    2022年11月25日
  • 什么是推广cpa一篇文章带你看懂CPA推广渠道

    CPA渠道 CPA指的是按照指定的行为结算,可以是搜索,可以是注册,可以是激活,可以是搜索下载激活,可以是绑卡,实名认证,可以是付费,可以是浏览等等。甲乙双方可以根据自己的情况来定…

    2022年11月25日
  • 抖音直播带货有哪些方法技巧(抖音直播带货有哪些痛点)

    如今抖音这个短视频的变现能力越来越突显了,尤其是在平台上开通直播,更具有超强的带货属性,已经有越来越多的普通人加入到其中了。不过直播带货虽然很火,但是也不是每个人都能做好的,那么在…

    2022年11月24日
  • 淘宝直播平台抽成多少(淘宝直播平台抽成比例)

    随着时代的发展,现在直播带货已经成为主要带货方式,其中淘宝是主流带货平台,不少人在上面直播带货赚钱,一些小伙伴也想加入,那么淘宝直播平台抽成多少?下面小编为大家带来淘宝直播平台抽成…

    2022年11月24日
  • 淘宝直播开通后带货链接怎么做(淘宝直播需要开通淘宝店铺吗)

    直播带货无论是对于商家来说还是主播收益都是非常可观的,所以不少平台都有直播带货功能,一些小伙伴也想加入淘宝直播,那么淘宝直播开通后带货链接怎么做?下面小编为大家带来淘宝直播开通后带…

    2022年11月24日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息