zoukankan      html  css  js  c++  java
  • 《Redis 持久化》

    一:什么是持久化?

        - Redis 是内存级别的数据库。所谓持久化,即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)中。

      - 可以持久读取操作等的数据。

      - Redis 支持 RDB/AOF 的持久化方式

    二:RDB 持久化

      - 本质

        - 通过 快照 方式来进行持久化。

      - RDB 配置

      • ################################ SNAPSHOTTING  #################################
        # 指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合
        # Save the DB on disk:
        #
        #   save <seconds> <changes>
        #
        #   Will save the DB if both the given number of seconds and the given
        #   number of write operations against the DB occurred.
        #
        #   满足以下条件将会同步数据:
        #   900秒(15分钟)内有1个键被更改
        #   300秒(5分钟) 内有10个键被更改
        #   60秒          内有10000个键被更改
        #   Note: 可以把所有“save”行注释掉,这样就取消同步操作了
        # 因为 RDB 只做后备使用,建议只在 slave 下进行, 15 分钟同步一次就可以,也就是说只保留 save 900 1 这个设置 save
        900 1 save 300 10 save 60 10000 # 指定存储至本地数据库时是否压缩数据,默认为yes,Redis采用LZF压缩,如果为了节省CPU时间,可以关闭该选项,但会导致数据库文件变的巨大 rdbcompression yes # 指定本地数据库文件名,默认值为dump.rdb dbfilename dump.rdb

      - RDB 相关命令

        - 手动执行 SAVE / BGSAVE 生成快照。

          - 在执行 SAVE 时, Redis会同步执行快照,同时堵塞其他客户端命令,所以要避免在生产环境中直接使用。

          - 手动快照推荐 BGSAVE ,后台执行,对其他客户端无影响。

          - 执行 LASTSAVE 可以查看最近一次快照的时间戳。

      - 原理

        - Redis 在执行快照时使用 fock 函数复制一份当前进程(父进程)的副本(子进程);

        - 父进程继续接受客户端请求,子进程写入。

        - 子进程写入完成之后,用临时文件替换旧的 RDB 文件,一次快照完成。

    三:AOF 持久化

      - 基本概念

        - Redis 默认是不开启 AOF 持久化的。

      - AOF 配置

      • # 配置 appendonly 开启 AOF 持久化
        appendonly yes
         
        # AOF 持久话文件名名称
        appendfilename “appendonly.aof"
         
        # AOF 持久化策略
        #     always 每次写入同步(最安全/慢)
        #     everysec 默认。每秒异步同步一次,如果一秒钟内宕机,有数据丢失
        #     no 将缓存回写的策略交给系统,linux 默认是30秒将缓冲区的数据回写硬盘的
        appendfsync always
         
        # rewrite 重写日志
        #     重新整理 AOF 日志。
        #     在 rewrite 结束之后,rewrite产生的新数据会导致文件的I/O,所以硬盘足够的情况下,应该减小重写次数,默认大小可以设置到 5G 以上
        auto-aof-rewrite-percentage 100 // 大于上次重写的百分比
        auto-aof-rewrite-min-size 64mb // 允许重写的最小

      

    四:AOF / RDB 相关

      - RDB与AOF同时开启  默认先加载AOF的配置文件

      - 相同数据集,AOF文件要远大于RDB文件,恢复速度慢于RDB

      - AOF运行效率慢于RDB,但是同步策略效率好,不同步效率和RDB相同

    五:应用场景

      - 备份

        - 对数据一致性有要求的请使用 AOF

        - 当数据量大,且对恢复速度有要求,并且数据的一致性要求不高的话,可以只使用RDB

      - 只做缓存

        - 不用开启任何的持久化方式

  • 相关阅读:
    android绘画折线图二
    android绘画折线图一
    jQuery Select操作大集合
    jquery事件切换hover/toggle
    jquery $(document).ready() 与window.onload的区别
    canny边缘检测 C++手动实现
    高斯核原理和C++实现
    darknet-yolov3 burn_in learning_rate policy
    UserWarning: indexing with dtype torch.uint8 is now deprecated, please use a dtype torch.bool instead
    BatchNormaliation
  • 原文地址:https://www.cnblogs.com/25-lH/p/9480579.html
Copyright © 2011-2022 走看看