zoukankan      html  css  js  c++  java
  • 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,性能最好,持久化没保证

  • 相关阅读:
    Mac上面Mov转gif
    iOS crash日志分析
    Markdown 学习笔记
    Homebrew安装和使用
    XCode 出现 is missing from working copy文件一直红色情况解决方法
    Mac上面用来录屏的软件(录制gif图片或者mov)
    (十七)Hibnernate 和 Spring 整合
    (十六)Hibernate中的延迟加载
    (十五)Hibernate中的多表操作(5):双向多对多
    (十四)Hibernate中的多表操作(4):单向一对一
  • 原文地址:https://www.cnblogs.com/martinzhang/p/3414621.html
Copyright © 2011-2022 走看看