• redis的数据持久化存储


    redis的数据持久化存储

    Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。Redis支持两种持久化方式:

    一、snapshotting(快照)方式
    快照是默认的持久化方式。这种方式是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。我们可以配置redis在n秒内如果超过若干个key被修改就自动做快照持久保存。

    在约87行,有默认的快照策略(指定在多长时间内,有多少次更新操作,就将数据同步到数据快照文件,可以多个条件配合,客户端也可以使用 save 命令强制立即保存快照):
    save 900 1        # 在900秒内有1个key更新,就写入快照文件
    save 300 10      # 在300秒内有10个key更新,就写入快照文件
    save 60 10000  # 在60秒内有10000个key更新,就写入快照文件

    # 是否采用LZF方式压缩存储快照文件?
    # 默认采用压缩存储(yes),压缩存储会更多的耗费CPU资源;
    # 如果你想节省一些CPU资源,可以设置为不采用压缩存储(no),但这样会导致快照文件体积变的很大(利弊请自己权衡);
    rdbcompression yes  # 默认

    # 快照文件
    dbfilename dump.rdb                                     # 默认文件名
    # dbfilename /usr/local/redis/dbbak/dump.rdb  # 如果需要也可以显式指定存储位置,这样的话dir配置选项会无效了

    # 指定本地数据库存放目录(快照文件和aof文件存储目录)
    dir ./                                 # 默认数据库快照文件、aof文件存储目录是当前目录
    dir /usr/local/redis/dbbak/   # 也可以显式指定快照文件、aof文件的存储目录


    二、append-only file(缩写aof)方式

    由于快照方式是在一定间隔时间做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改。
    aof比快照方式有更好的持久化性,是由于在使用aof时,redis会将每一个收到的写命令都通过write函数追加到文件中,当redis重启时会通过重新执行aof文件中保存的“增删改”命令,而在内存中重建整个数据库内容。

    由于OS会在内核中缓存write做的修改,所以可能不是立即写到磁盘上。这样aof方式的持久化也还是有可能会丢失部分修改。解决方式是可以通过配置文件告诉redis我们想要通过fsync函数强制OS写入到磁盘的时机。

    # aof 总开关
    在约283行找到 appendonly no 默认是关闭状态,如需将其启用改为:
    appendonly yes

    # aof文件存储路径
    # appendfilename appendonly.aof                                    # 默认文件名
    # appendfilename /usr/local/redis/dbbak/appendonly.aof    # 如果需要指定路径可显式指定修改,这样的话dir配置选项会无效了

    # aof 方式 在约309行
    # appendfsync always  # 收到写命令就立即写入磁盘,最慢,但是保证完全的持久化
    appendfsync everysec  # 每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中(默认,推荐)
    # appendfsync no       # 完全依赖os,性能最好,持久化没保证

  • 相关阅读:
    福建工程学院第十四届ACM校赛B题题解
    2018 ACM-ICPC青岛现场赛 B题 Kawa Exam 题解 ZOJ 4059
    联合周赛第二场 我在哪?题解
    维修数列 Splay(这可能是我写过最麻烦的题之一了。。。用平衡树维护dp。。。丧心病狂啊。。。。)
    虚树入门!世界树!
    御坂御坂题解(出自北航校赛) 约瑟夫环问题高效解决方案
    网络流24题! 开始!题解!
    AFO
    【模板库】减维的模板库【停更】
    【组合数学】Educational Codeforces Round 83 (Rated for Div. 2) D题
  • 原文地址:https://www.cnblogs.com/xie-xiao-chao/p/7930187.html
Copyright © 2020-2023  润新知