redis持久化及配置

redis支持两种持久化方式:一种是RDB方式,另一种是AOF方式可以单独使用,也可以两者结合使用。

第一种:rdb(快照)redis默认的持久化方式
  1. 原理:在符合一定条件下,将数据快照并存储到硬盘上。默认存储在redis根目录的dump.rdb文件中
  2. 过程:当redis需要做持久化时,redis会fork一个子进程;子进程将数据写到磁盘上一个临时RDB文件中;当子进程完成写临时文件后,将原来的RDB替换掉,然后子进程退出
  3. 持久化配置:
    image
  4. 优势:保存了某个时间点的数据集,比如最近24小时每小时,最近一个月的每一天去备份。这样可以方便的还原不同的版本。而且它是由子进程进行备份工作,所以恢复效率会很高。不会让主进程去消耗性能。
  5. 劣势:在备份过程中,子进程是保存了那个时间节点的数据,但是如果数据量过大,耗时久,一旦redis服务宕机,备份期间进入redis 的数据就会丢失。因为并没有做到保存。
第二种:aof(命令追加)
  1. 原理:根据配置的策略将每一个命令通过write函数追加到文件中(默认是 appendonly.aof)。
  2. 过程:
    • 子进程开始将需要备份的命令写入新的aof文件。
    • 主进程将新执行的命令放入内存缓存中,同时还将这些新执行的命令继续追加写入旧的aof文件,
    • 当子进程完成对新的aof文件的写入工作,通知主进程。主进程就会将内存缓存中的命令集追加写入到新的aof文件。
    • 写入完成,再将新的aof文件替换旧的。
  3. 持久化配置:
    image
    image
  4. 优势:数据丢失概率小。
  5. 劣势:aof的文件体积大。恢复数据速度慢。
  6. 重写机制:简单理解是对于当前数据库数据状态进行复制。减小aof文件的体积。 重写后的新 AOF 文件包含了恢复当前数据集所需的最小命令集合。
    参考链接:https://blog.csdn.net/qq_34021712/article/details/71774495https://www.cnblogs.com/xuwenjin/p/9876432.html
原文地址:https://www.cnblogs.com/rbwbear/p/15555227.html