• Redis持久化机制


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

    Redis支持两种持久化方式:

    1. Snapshot(快照),也是默认方式;

    这种方式是将内存中数据以快照的方式写入二进制文件中,默认的文件名为dump.rdb.可以通过配置设置自动做快照持久化的方式.

    save 900 1      #900秒内如果超过1个key被修改,则发起快照
    save 300 10    #300秒内如果超过10个key被修改,则发起快照
    save 60 10000    #60秒内如果超过10000个key被修改,则发起快照

    我们可以看到,刚装完Redis的时候没有dump.rdb文件,满足快照要求后,系统会自动生成dump.rdb,且文件类型为二进制文件.

    2.Append-only file(aof)方式;

    由于快照方式是在一定间隔时间做一次的,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改.

    aof比快照方式有更好的持久化性,是由于使用aof时,Redis会将每一个收到的命令都通过write函数追加到文件中,当Redis重启时会通过重新执行文件中保存的

    写命令来在内存中重建整个数据库内容.

    当然由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上.这样aof方式的持久化也是有可能丢失部分修改

    可以通过配置文件告诉Redis我们想要通过fsync函数强制os写入磁盘的时机.

    appendfsync always        #收到命令立即写入磁盘,效率最慢,但是保证完全的持久化

    appendfsync everysec     #每秒钟写入磁盘一次,在性能和持久化方面做了很好的折中

    appendfsync no          #完全依赖os,性能最好,持久化没保证

    我们来在shell看一下:

    编辑Redis.conf文件,修改appendonly no为appendonly yes

    再次启动Redis,增加一个key

    我们可以看到系统自动生成了一个appendonly.aof文件,且非二进制,我们用cat查看,其实里面保存的就是我们刚才新加的命令.

  • 相关阅读:
    禅道,导出选中的用例
    chrome 历史版本下载地址
    在QT中添加zeromq DLL库
    在QT中添加zeromq DLL库
    在QT中添加zeromq库,zeromq的下载编译
    工控软件dll劫持漏洞分析
    [转载]Impost3r:一款针对Linux的密码提取工具
    0MQ绑定Delphi版-说明
    通过Maven导出war包时报错:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project Ocr: Error assembling WAR: webxml
    价值投资必须掌握的几个指标zz
  • 原文地址:https://www.cnblogs.com/lizzie-xhu/p/5487373.html
Copyright © 2020-2023  润新知