美文网首页
Redis从入门到精通5:Redis的持久化

Redis从入门到精通5:Redis的持久化

作者: 金字塔下的小蜗牛 | 来源:发表于2020-04-04 23:45 被阅读0次

    本节来介绍Redis的持久化。

    Redis支持两种方式持久化:RDB和AOF。默认开启RDB,而禁用AOF。

    1.RDB快照方式

    RDB方式,是一种快照,即每隔一段时间生成Redis内存的快照。启动redis后,默认会在当前工作目录下生成dump.rdb的快照文件。可以通过redis.conf的”SNAPSHOTTING”模块来设置RDB的属性。

    # 设置RDB生成的策略,单位是秒(顺序从下往上)
    save 900 1 # 在15分钟内如果有1个Key发生了变化就保存一下快照
    save 300 10 # 在5分钟内如果有10个Key发生了变化就保存一下快照
    save 60 10000 # 在1分钟内如果有10000个Key发生了变化就保存一下快照
    ## 如果禁用RDB时,只需要注释掉上面的三条策略即可

    # 如果保存RDB文件时出错,禁止写入新的数据
    stop-writes-on-bgsave-error yes

    # 是否压缩RDB文件,节省空间,但是会牺牲一定的性能
    rdbcompression yes

    # 使用RDB文件恢复数据时,是否检查RDB文件的校验和
    rdbchecksum yes

    # RDB文件的名字(多个实例时需要设置成不同的名字)
    dbfilename dum.rdb

    # RDB文件保存的目录,默认是Redis的家目录
    dir ./

    • RDB的优点:恢复速度快;
    • RDB的缺点:如果在两次RDB之间发生崩溃,数据可能丢失。

    2.AOF日志方式

    AOF,全称是Append Only File,是一种日志方式,默认是禁用的。

    开启AOF方式需要修改redis.conf配置文件中”APPEND ONLY MODE”模块的配置:

    # 开启AOF日志功能
    appendonly yes

    # AOF日志文件的名字(多个实例需要设置不同的名字)
    appendfilename "appendonly.aof"

    # 记录日志的策略
    # appendfsync always 每次操作都记录日志
    appendfsync everysec (默认)每秒记录一次日志
    # appendfsync no 不是禁用,而是由操作系统决定什么时候生成日志

    # Redis进行日志重写的时候,是否继续写入日志
    no-appendfsync-on-rewrite no

    # 什么时候执行日志重写
    auto-aof-rewrite-percentage 100 超过上次重写后大小的一倍执行重写
    auto-aof-rewrite-min-size 64mb 超过64M开始执行重写

    什么是日志重写

    日志重写就是将一个Key的多条操作过程的结果,直接用一条赋值语句代替,删除这个Key之前的操作记录。也就是说,经过日志重写之后,将不能恢复到之前的历史值。

    根据日志重写的规律可以知道,AOF文件的大小先增加,发生日志重写后变小。可以使用Redis自带的压力测试工具来观测这个现象。

    bin/redis-benchmark -n 100000

    • AOF的优点:数据不会丢失
    • AOF的缺点:恢复相对RDB会慢一些

    在实际工作中,结合RDB和AOF。相当于Oracle数据库中的完全备份和增量备份。

    相关文章

      网友评论

          本文标题:Redis从入门到精通5:Redis的持久化

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