【腾讯阿里最全面试题】Redis持久化RDB和AOF的区别.pdfVIP

【腾讯阿里最全面试题】Redis持久化RDB和AOF的区别.pdf

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【腾讯阿⾥最全⾯试题】Redis持久化RDB和AOF的区别 持久化⽅式有哪些?有什么区别? redis持久化⽅案分为RDB和AOF两种。 RDB RDB持久化可以⼿动执⾏也可以根据配置定期执⾏,它的作⽤是将某个时间点上的数据库状态保存到RDB⽂件中,RDB⽂件是⼀个压缩的 ⼆进制⽂件,通过它可以还原某个时刻数据库的状态。由于RDB⽂件是保存在硬盘上的,所以即使redis崩溃或者退出,只要RDB⽂件存 在,就可以⽤它来恢复还原数据库的状态。 可以通过SAVE或者BGSAVE来⽣成RDB⽂件。 SAVE命令会阻塞redis进程,直到RDB⽂件⽣成完毕,在进程阻塞期间,redis不能处理任何命令请求,这显然是不合适的。 BGSAVE则是会fork出⼀个⼦进程,然后由⼦进程去负责⽣成RDB⽂件,⽗进程还可以继续处理命令请求,不会阻塞进程。 AOF AOF和RDB不同,AOF是通过保存redis服务器所执⾏的写命令来记录数据库状态的。 AOF通过追加、写⼊、同步三个步骤来实现持久化机制。 1. 当AOF持久化处于激活状态,服务器执⾏完写命令之后,写命令将会被追加append到aof_buf缓冲区的末尾 2. 在服务器每结束⼀个事件循环之前,将会调⽤flushAppendOnlyFile函数决定是否要将aof_buf的内容保存到AOF⽂件中,可以通过 配置appendfsync来决定。 always ##aof_buf内容写⼊并同步到AOF⽂件 everysec ##将aof_buf中内容写⼊到AOF⽂件,如果上次同步AOF⽂件时间距离现在超过1秒,则再次对AOF⽂件进⾏同步 no ##将aof_buf内容写⼊AOF⽂件,但是并不对AOF⽂件进⾏同步,同步时间由操作系统决定 如果不设置,默认选项将会是everysec,因为always来说虽然最安全(只会丢失⼀次事件循环的写命令),但是性能较差,⽽everysec模式 只不过会可能丢失1秒钟的数据,⽽no模式的效率和everysec相仿,但是会丢失上次同步AOF⽂件之后的所有写命令数据。 说说 Redis基本数据类型有哪些吧 1. 字符串:redis没有直接使⽤C语⾔传统的字符串表⽰,⽽是⾃⼰实现的叫做简单动态字符串SDS的抽象类型。C语⾔的字符串不记录 ⾃⾝的长度信息,⽽SDS则保存了长度信息,这样将获取字符串长度的时间由O(N)降低到了O(1),同时可以避免缓冲区溢出和减少修 改字符串长度时所需的内存重分配次数。 2. 链表linkedlist:redis链表是⼀个双向⽆环链表结构,很多发布订阅、慢查询、监视器功能都是使⽤到了链表来实现,每个链表的节点 由⼀个listNode结构来表⽰,每个节点都有指向前置节点和后置节点的指针,同时表头节点的前置和后置节点都指向NULL。 3. 字典hashtable:⽤于保存键值对的抽象数据结构。redis使⽤hash表作为底层实现,每个字典带有两个hash表,供平时使⽤和 rehash时使⽤,hash表使⽤链地址法来解决键冲突,被分配到同⼀个索引位置的多个键值对会形成⼀个单向链表,在对hash表进⾏ 扩容或者缩容的时候,为了服务的可⽤性,rehash的过程不是⼀次性完成的,⽽是渐进式的。 4. 跳跃表skiplist:跳跃表是有序集合的底层实现之⼀,redis中在实现有序集合键和集群节点的内部结构中都是⽤到了跳跃表。redis跳 跃表由zskiplist和zskiplistNode组成,zskiplist⽤于保存跳跃表信息(表头、表尾节点、长度等),zskiplistNode⽤于表⽰表跳跃节 点,每个跳跃表的层⾼都是1-32的随机数,在同⼀个跳跃表中,多个节点可以包含相同的分值,但是每个节点的成员对象必须是唯⼀ 的,节点按照分值⼤⼩排序,如果分值相同,则按照成员对象的⼤⼩排序。 5. 整数集合intset:⽤于保存整数值的集合抽象数据结构,不会出现重复元素,底层实现为数组。 6. 压缩列表ziplist:压缩列表是为节约内存⽽开发的顺序性数据结构,他可以包含多个节点,每个节点可以保存⼀个字节数组或者整数 值。 基于这些基础的数据结构,redis封装了⾃⼰的对象系统,包含字符串对象string、列表对象list、哈希对象hash、集合对象set、有序集合 对象zset,每种对象都⽤到了⾄少⼀种基础的数据结构。 redis通过encoding属性设置对象的编码形式来提升灵活性和效率,基于不同的场景redis会⾃动做出优化。不同对象的编码如下: 1. 字符串对

文档评论(0)

***** + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体宁夏三科果农牧科技有限公司
IP属地宁夏
统一社会信用代码/组织机构代码
91640500MABW4P8P13

1亿VIP精品文档

相关文档