美文网首页
Redis 数据持久化策略

Redis 数据持久化策略

作者: Ansme | 来源:发表于2021-06-15 16:16 被阅读0次

    Redis 数据持久化策略

    redis 是基于内存的非关系型数据库,一旦服务器进程推出,数据库中的数据就会丢失,reids 为了解决这类问题,提供了两种持久化方式,RDB 和 AOF,将内存中的数据保存到磁盘中,避免数据丢失

    RDB(快照)

    工作原理

    • redis 主进程会 fork 出一个子进程
    • 子进程把数据写到一个临时的 RDB 文件
    • 子进程写完数据后用新的 RDB 文件把旧的 RDB 文件替换掉

    优点

    • RDB 文件是一个经过压缩的二进制文件,它保存了某个时间点的 redis 数据,适合做定时备份
    • RDB 在使用 BGSAVE 命令时,主进程 fork 一个子进程出来,子进程进行持久化的工作,主进程不会阻塞
    • RDB 在 redis 启动时如果检测到 RDB 文件,会自动载入这个文件,数据量较大的情况下,RDB 的启动速度更快

    缺点

    • RDB 容易造成数据的丢失,假设 redis 定期保存快照,如果 redis 因为异常原因无法正常工作,那么从上次保存快照到 redis 出现问题的这段时间内的数据就会丢失
    • RDB 使用 fork() 产生子进程进行数据持久化,如果数据量较大,fork 过程会花费一定的时间,可能会造成 redis 停止服务一定时间

    配置方式

    # RDB文件名,默认为dump.rdb。
    dbfilename dump.rdb
    
    # 文件存放的目录,AOF文件同样存放在此目录下。默认为当前工作目录。
    dir ./
    
    # 保存点可以设置多个
    save 900 1    # 900 秒后至少有 1 个 key 有变动
    save 300 10   # 300秒后至少10个key有变动
    save 60 10000 # 60秒后至少10000个key有变动
    save ""       # 禁用快照保存的功能
    

    AOF (追加文件)

    工作原理

    • AOF 是备份数据库接收到的命令
    • 除了指定数据库的 select 命令,其他的命令都是来自 client 的,这些命令会以追加的形式保存到文件中
    • redis 自动载入 AOF 文件,创建一个虚拟的 clientAOF 中的每一条命令都执行一遍,最终还原数据库的状态
    • redis 在 RDBAOF 备份文件都存在的情况下,优先载入 AOF 备份文件

    优点

    • AOF 比 RDB 更加可靠,可定制不同的 fsync 策略:不进行 fsync, 每秒 fsync 一次和每次查询进行 fsync
    • AOF 日志文件是一个纯追加的文件,日志文件比较安全,不易损坏,就算损坏也可以使用 redis-check-aof 命令进行简单的修复
    • 当AOF文件太大时,Redis会自动在后台进行重写,重写在一个新的文件上进行,同时 redis 会继续往旧的文件追加数据。新文件上会写入能重建当前数据集的最小操作命令的集合。当新文件重写完,redis 会把新旧文件进行切换,然后开始把数据写到新文件上
    • AOF 备份文件存储的是简单易懂的一条一条的操作命令,很容易导出来用于恢复数据

    缺点

    • 在相同的数据集下,AOF 文件的大小一般会比 RDB 文件大
    • 在某些 fsync 策略下,AOF 的速度会比 RDB 慢

    配置方式

    # 启用AOF
    appendonly yes
    
    # 文件存放目录,与RDB共用。默认为当前工作目录。
    dir ./
    
    # 默认文件名为appendonly.aof
    appendfilename "appendonly.aof"
    
    # 备份频率
    appendfsync always    # 每次更新数据都写入仅增日志文件。慢,但是最安全
    appendfsync everysec  # 每秒调用一次,折中
    appendfsync no        # 不调用,等待操作系统来清空缓冲区当操作系统要输出数据时。很快。
    

    (如有错误,欢迎指正)

    相关文章

      网友评论

          本文标题:Redis 数据持久化策略

          本文链接:https://www.haomeiwen.com/subject/tobzeltx.html