• 面试干货丨Redis缓存数据库,持久化机制有哪几种你知道吗?!


    场景介绍

    小白:杨哥,我们学的redis缓存数据库,关于他的持久化机制能给我详细讲讲吗?昨天面试时被问到了,我回答的不是很理想,哭唧唧😭。

    杨哥:没问题,来,整起!

    . 持久化方案

    Redis的持久化机制有3种实现方案:RDB、AOF、混合持久化

    RDB方案

    3.1持久化机制--自动

    RDB是Redis默认的持久化机制,一般会按默认的规则自动触发数据的持久化。

    3.2持久化机制--手动执行

    Redis也可以通过手动操作触发持久化,我们可以使用save和bgsave两个命令进行触发。

    3.2.1 save命令

    save命令会阻塞当前Redis的线程,直到RDB持久化过程完成为止,若持久化的数据较大,则会造成长时间的阻塞,不建议在线上环境直接使用该命令。

    3.2.2 bgsave命令

    执行bgsave命令时,redis进程会通过fork操作创建出一个子进程,由子线程完成持久化操作,阻塞时间很短(微秒级)。这是对save命令的优化,在执行redis-cli shutdown命令关闭redis服务时,如果没有开启AOF持久化,就会自动执行bgsave。

    3.3 RDB的优缺点

    优点:

    • 压缩后的二进制文件,适用于备份、全量复制,适用于灾难恢复;

    • 加载RDB恢复数据远快于AOF方式。

    缺点:

    • 无法做到实时持久化,每次都要创建子进程,频繁操作成本过高;

    • 保存后的二进制文件,存在老版本不兼容新版本rdb文件的问题;

    • 数据可能丢失。

    •  

    AOF方案

    AOF是通过保存Redis服务器执⾏的所有写操作命令来进行数据库备份的方案,并在服务器启动时,通过重新执行记录的这些命令来还原数据集。

    4.1 开启和关闭

    默认没有开启AOF,需要我们在redis.config中进行手动修改。

    4.2 执行流程

    当redis服务重启时,可加载AOF文件进行恢复。以下是AOF方案的执行流程。

    4.3 写入磁盘机制

    4.4 重写机制

    4.5 AOF的优缺点

    优点:

    • AOF比RDB更可靠。我们可以设置不同的fsync策略:no、everysec和?always,默认是everysec。在这种配置下,redis仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失1秒钟的数据。

    • AOF是一个纯追加的日志文件。即使日志因为某些原因包含了未写入完整的命令(如磁盘已满,写入中途停机等等)可以redis-check-aof轻易地修复这种问题。

    • 当?AOF文件件太大时,会重写。

    • AOF文件易于解析。

    缺点:

    AOF持久化的速度,相对RDB较慢的,存储的是一个文本文件,到了后期文件会比较大,传输困难。

    混合使用方案

    混合持久化并不是一种全新的持久化方式,而是对已有方式的优化。混合持久化只发于 AOF 重写过程。使用了混合持久化,重写后的新 AOF 文件件前半段是 RDB 格式的全量数据,后半段是 AOF 格式的增量数据。

    优点:结合RDB和AOF的优点,更快的重写和恢复。

    缺点:AOF文件中的RDB部分不再是AOF格式,可读性差。

    *威哥Java学习交流Q群:691533824
    加群备注:CSDN推荐

  • 相关阅读:
    Swoole 4.8版本的安装
    WordPress实时搜索插件Ajax Search Lite,轻松替代默认搜索功能
    【问题征集】向 iPod 之父、iPhone 联合设计者、Google Nest 创始人 Tony Fadell 提问啦
    批量md5解密教程,用这个免费md5解密网站亲测能解
    Abbexa丨Abbexa FOXD3 DNA 结合ELISA试剂盒方案
    9. React18之useTransition与useDeferredValue
    Django笔记十三之select_for_update等选择和更新等相关操作
    【Ascend310】【Mindspore】安装mindspore后无法进行跑通样例
    java限流
    计算机毕业设计Java哈尔滨旅游项目推荐平台演示录像2020(源码+系统+mysql数据库+Lw文档)
  • 原文地址:https://blog.csdn.net/finally_vince/article/details/126034510