zoukankan      html  css  js  c++  java
  • Redis配置文件(2)SNAPSHOTTING快照/APPEND ONLY MODE追加

    redis.conf文件

    1.Save
    a. save 秒钟 写操作次数
    RDB是整个内存的压缩过的Snapshot,RDB的数据结构,可以配置复合的快照触发条件,
    默认
    是1分钟内改了1万次,
    或5分钟内改了10次,
    或15分钟内改了1次。

    182 # Save the DB on disk:
    184 #   save <seconds> <changes>
    186 #   Will save the DB if both the given number of seconds and the given
    187 #   number of write operations against the DB occurred.
    189 #   In the example below the behaviour will be to save:
    190 #   after 900 sec (15 min) if at least 1 key changed
    191 #   after 300 sec (5 min) if at least 10 keys changed
    192 #   after 60 sec if at least 10000 keys changed

    b.如果想禁用RDB持久化的策略,只要不设置任何save指令,或者给save传入一个空字符串参数也可以

    194 #   Note: you can disable saving completely by commenting out all "save" lines.
    195 #
    196 #   It is also possible to remove all the previously configured save
    197 #   points by adding a save directive with a single empty string argument
    198 #   like in the following example:
    199 #
    200 #   save ""
    202 save 900 1
    203 save 300 10
    204 save 60 10000
    set key value1
    
    save
    此时立马执行,形成最新的dump文件
    stop-writes-on-bgsave-error
    如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制
    # However if you have setup your proper monitoring of the Redis server
    # and persistence, you may want to disable this feature so that Redis will
    # continue to work as usual even if there are problems with disk,
    # permissions, and so forth.
    stop-writes-on-bgsave-error yes

    yes:出错了就立即停止

    rdbcompression
    rdbcompression:对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用
    LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能
    # Compress string objects using LZF when dump .rdb databases?
    # For default that's set to 'yes' as it's almost always a win.
    # If you want to save some CPU in the saving child set it to 'no' but
    # the dataset will likely be bigger if you have compressible values or keys.
    rdbcompression yes

    dbfilename

    默认生成的rdb文件名

    # The filename where to dump the DB
    dbfilename dump.rdb

    dir

    # Note that you must specify a directory here, not a file name.
    dir ./

    实战测试:

    修改配置文件

    200 #   save ""
    202 save 900 1
    203 save 120 10
    204 save 60 10000

    两分钟10次操作

    之后会生成一个dump.rdb文件,具体生成文件的默认名请修改:dbfilename

     进行复制(备份)

     

     模拟事故:

    此时直接删除所有的数据

     

     此时再次重新登陆则是会显示为空,即是存在dump.rdb文件

     

    在管不redis时,迅速斩断,保存文件dump.rdb

     

    此时删除之前的dump.rdb文件,并且把之前的dump_cp.rdb备份文件复制一份命名为dump.rdb
    此时又可以进行之前的keys的值获取

     

     APPEND ONLY MODE追加

      appendonly:默认开关状态,可以同时和RDB一起开着

    # AOF and RDB persistence can be enabled at the same time without problems.
    # If the AOF is enabled on startup Redis will load the AOF, that is the file
    # with the better durability guarantees.
    #
    # Please check http://redis.io/topics/persistence for more information.
    
    appendonly no
    默认是关着的

      appendfilename:默认的文件名

    # The name of the append only file (default: "appendonly.aof")
    appendfilename "appendonly.aof"

     appendfsync

    # no: don't fsync, just let the OS flush the data when it wants. Faster.
    # always: fsync after every write to the append only log. Slow, Safest.
    # everysec: fsync only one time every second. Compromise.
    always:同步持久话每次发生数据变更立即记录到磁盘,性能比较差但是数据完整性好
    everysec:出场默认的推荐的,异步操作,每秒记录,如果一秒内宕机,有数据丢失
    # More details please check the following article:
    # http://antirez.com/post/redis-persistence-demystified.html
    # If unsure, use "everysec".
    # appendfsync always
    appendfsync everysec
    no-appendfsync-on-rewrite:重写时是否可以运用Appendfsync,
    用默认no即可,保证数据安全性。
    # If you have latency problems turn this to "yes". Otherwise leave it as
    # "no" that is the safest pick from the point of view of durability.
    no-appendfsync-on-rewrite no
    auto-aof-rewrite-min-size:设置重写的基准值
    auto-aof-rewrite-percentage:设置重写的基准值
    # This base size is compared to the current size. If the current size is
    # bigger than the specified percentage, the rewrite is triggered. Also
    # you need to specify a minimal size for the AOF file to be rewritten, this
    # is useful to avoid rewriting the AOF file even if the percentage increase
    # is reached but it is still pretty small.
    # Specify a percentage of zero in order to disable the automatic AOF
    # rewrite feature.
    auto-aof-rewrite-percentage 100
    auto-aof-rewrite-min-size 64mb
    实战测试:
    aof测试
    首先开启aof测试
    # Please check http://redis.io/topics/persistence for more information.
    appendonly yes
    此时已经生成文件,aof自动开启

     创造性的意外事件

     

    查看appendonly.aof
    发现已经记下了我们写的命令
    记录了我们执行的每一条命令

     

    重新启动
    里面的内容为空

     

    删除appendonly.aof
    的最后一句

     

    此时重新启动
    获取到我们之前的内容

     

    假设出现下面的情况:
    appendonly.aof文件出错:可能是网络,断电.......

     

     此时RDB和AOF文件都在

     

     此时启动Redis

     

     在dump.rdb文件完整的情况下,appendonly.aof文件出错,说明后者的优先级大于前者

     那么此时的处理方式是:

    redis-check-aof --fix appendonly.aof

     

    再次重新启动:

     

  • 相关阅读:
    文件修改的两种方式
    人工智能 01. 语音合成,语音识别,相似度,图灵机器人,智能对话
    flask --- 04 . 偏函数, 线程安全,栈堆,
    flask --- 03 .特殊装饰器, CBV , redis ,三方组件
    flask --- 02. 路由, 初始化配置,蓝图
    linux --- 10.常见命令
    flask --- 01 .初始
    linux --- 9. docker 容器 和 rabbitmq 队列
    linux --- 8. mysql数据库,redis 数据库
    linux --- 7. 路飞学城部署
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10053560.html
Copyright © 2011-2022 走看看