• Redis的持久化机制


    RDB:Redis DataBase

    将某一时刻的内存快照,以二进制的方式写入磁盘。
    手动触发:
    save命令,使得Redis处于阻塞状态,直到RDB持久化完成,才会响应其他客户端发来的命令,所以在生产环境慎用。
    bgSave命令,会fork出一个子进程进行持久化,主进程只有在fork过程中会有短暂的阻塞,子进程创建dump.rdb之后,主进程就可以响应客户端请求了。

    自动触发:
    save m n:在m秒内,如果有n个键发生改变,则自动触发持久化,通过bgsave执行,如果设置了多个,只要满足其中一个就会触发,配置文件有默认配置
    flushall:用于清空redis所有的数据库,flushdb清空当前redis所在库数据(默认是0号数据库),会清空RDB文件,同时也会生成dump.rdb,内容为空。
    主从同步:全量同步时会自动触发bgsave命令,生成rdb发送给从节点。

    优点:
    (1)整个Redis数据库将只包含一个文件,dump.rgb文件,方便持久化。
    (2)容灾性好,方便备份。
    (3)性能最大化,fork子进程用来完成写操作,让主进程继续处理命令,所以是IO最大化。使用单独的子进程来进行持久化,主进程不会进行任何IO操作,保证了redis 的高性能。
    (4)相对于数据集较大时,比AOF的启动效率更高。

    缺点:
    (1)数据安全性低,RDB是间隔一段时间进行持久化,如果持久化之间发生故障,会发生数据丢失,所以这种方式适合数据要求不严谨的时候。
    (2)由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,当数据量较大时,可能会导致整个服务器停止服务几百毫秒,甚至一秒钟,会占用cpu。

    AOF Append Only File

    以日志的形式记录服务器锁处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录,调用操作系统命令进行刷盘。
    (1)所有的写命令会追加到AOF缓冲之中。
    (2)AOF缓冲区根据对应的策略向硬盘同步操作。
    (3)随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的。
    (4)当Redis重启时,可以加载AOF文件进行数据恢复。
    同步策略:
    (1)每秒同步,异步完成,效率非常高,一旦出现系统宕机情况,那么这一秒钟修改的数据将会丢失。
    (2)每修改同步:同步持久化,每次发生的数据变化都会被立即记录到磁盘中,最多丢一条不同步。

    优点:
    (1)数据安全
    (2)通过append模式写文件,即使中途宕机也不会破坏已经存在的内容,可以通过redis-check-aof工具解决数据的一致性问题。
    (3)AOF的rewrite模式,定期对AOF文件进行重写,以达到压缩的目的。

    缺点:
    (1)AOF文件比RDB文件大,且恢复速度慢。
    (2)数据集大的时候,比rdb启动效率低。
    (3)运行效率没有rdb高。

    总结对比

    (1)AOF文件比RDB文件更新频率高,优先使用AOF还原数据。AOF比RDB更安全也更大。
    (2)RDB性能比AOF好。
    (3)如果两个都配了会优先使用AOF。

  • 相关阅读:
    Vue之没有字段造成双向绑定失效问题
    APP自动化测试-12.Appium日志分析(原理)
    让iPhone用电脑的网络上网
    WSL下安装ubuntu 18.04 +meep进行FDTD仿真计算
    ESP-RTC方案乐鑫ESP32-S3音视频通信应用,启明云端乐鑫代理商
    SSM+基于微信小程序的航空售票管理系统 毕业设计-附源码191111
    MVC、MVP、MVVM区别
    linux设备模型:设备及设备节点创建过程分析
    SB30100LCT-ASEMI插件肖特基二极管SB30100LCT
    PHP中的命名空间和自动加载机制
  • 原文地址:https://blog.csdn.net/weixin_49131718/article/details/132794878