zoukankan      html  css  js  c++  java
  • redis持久化

    众所周知,redis的强劲性很大程度是因为将数据存储在了内存中,这样的优点显而易见,读取速度快;但是缺点也比较明显,过分依赖、占用内存,当redis重启后,存储在内存中的数据就会丢失。这时候就需要掌握一门新的技巧--redis持久化。

    redis持久化方式

    - RDB方式

    根据指定规则,定时将内存中的数据存储在硬盘上。

    - AOF方式

    每次执行命令后将命令本身记录在硬盘上。

    下面我们来详细了解下这两种持久化方式。

    RDB方式

    保存方式:文件快照(dump.rdb 文件)。

    什么情况下会保存快照呢?

    1、根据配置规则进行自动快照。

    - 保存快照的触发条件可以在配置文件中设置,两个重要的参数:M 时间,单位是 s,N 键的个数。例如:save 300 6 表示300秒内有6个键被修改则进行快照。

    - 快照可以存在多个触发条件,多个条件之间的关系为 ‘或’。

    2、用户执行 SAVE 或 BGSAVE 命令。

    - 执行 SAVE 命令会同步保存快照,但是阻塞来自客户端的请求。

    - 推荐使用 BGSAVE 命令,后台异步进行快照。

    3、执行 FLUSHALL 命令。

    - 执行 FLUSHALL 命令时,会清楚数据库中的所有数据,若存在快照触发保存条件,即使没达到条件的限制,也会保存快照。

    4、执行复制时。

    - 使用主从模式,复制初始化时会进行快照生成。

    优缺点。

    RDB文件是经过压缩的二进制格式,占用空间会小于内存中的数据大小;

    redis 异常退出,会丢失最后一次快照以后更改的所有数据。

    AOF方式

    默认情况下 AOF 没有打开,可以通过 appendonly yes 命令来开启。AOF 会将 redis 执行的每一条命令都追加到硬盘中,显然会影响 redis 性能,综合考虑后使用。

    保存方式:appendonly.aof 文件。

    AOF 重写

    - 可以通过配置文件的设置来达到重写 AOF 文件的目的。

    - 手动执行 BGREWRITEAOF 命令来重写 AOF 文件。 

    注:由于操作系统的缓存机制问题,AOF 数据并没有真正的写入硬盘,而是记录在了系统的硬盘缓存中,然后系统默认每 30s 向硬盘同步一次。redis 中可以通过配置 appendfsync 参数来设置同步时机。

    备注

    - 不管是 RDB 快照重新生成,还是 AOF 文件的重写,只和内存中的数据有关,和之前生成的文件无关。

    - redis 允许同时开启 RDB 和 AOF,同时启动后,redis重新启动会优先使用 AOF 文件来恢复数据。

  • 相关阅读:
    AC自动机
    HDU
    2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II
    POJ 3784 Running Median【维护动态中位数】
    CodeForces
    HDU 2444 The Accomodation of Students【二分图最大匹配问题】
    POJ 1201 Intervals【差分约束】
    POJ 2976 Dropping tests【0/1分数规划模板】
    2019牛客暑期多校训练营(第七场)A.String【最小表示法】
    POJ 1287 Networking【kruskal模板题】
  • 原文地址:https://www.cnblogs.com/suojian/p/13288916.html
Copyright © 2011-2022 走看看