您当前的位置: 首页 >  redis

恐龙弟旺仔

暂无认证

  • 1浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Redis持久化

恐龙弟旺仔 发布时间:2018-02-02 16:40:48 ,浏览量:1

四:持久化
    redis支持RDB和AOF两种持久化机制,持久化有效避免了因程序退出造成的数据丢失问题。
    1.RDB
        将当前进程数据生成快照保存到硬盘的过程。
        1)触发机制
            * 手动触发 save|bgsave命令,触发命令使用如下
127.0.0.1:6379> save
OK
127.0.0.1:6379> bgsave
Background saving started
            此时服务端日志为
5300:M 21 Jan 02:28:35.338 * DB saved on disk
5300:M 21 Jan 02:28:41.285 * Background saving started by pid 5305
5305:C 21 Jan 02:28:41.298 * DB saved on disk
5305:C 21 Jan 02:28:41.298 * RDB: 0 MB of memory used by copy-on-write
5300:M 21 Jan 02:28:41.304 * Background saving terminated with success
5300:M 21 Jan 02:29:24.592 * Background saving started by pid 5307
5307:C 21 Jan 02:29:24.594 * DB saved on disk
5307:C 21 Jan 02:29:24.595 * RDB: 0 MB of memory used by copy-on-write
5300:M 21 Jan 02:29:24.599 * Background saving terminated with success
           * 自动触发 设置redis.conf文件中的
#save ""
save 900 1
save 300 10
save 60 10000
        注意:save命令会阻塞当前redis服务,知道保存完成,对于内存较大的实例会造成长时间的阻塞;而bgsave则会执行fork操作创建子进程,持久化操作由子进程执行,阻塞只发生在fork阶段,一般时间很短。
        2)RDB文件
            通过设置redis.conf文件中的dbfilename和dir属性来确定文件路径和文件名称
dbfilename dump.rdb
dir ./
        3)RDB优缺点
            * 优点:是一个紧凑的二进制文件,代表某个时间点上的数据快照,适合用于备份;redis加载RDB恢复数据快于AOF的方式
            * 缺点:无法做到实时持久化
    2.AOF
        以独立日志的方式记录每次写命令,重启时会重新执行AOF文件中的命令以达到恢复数据的目的
        1)配置方式
appendonly yes
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"
    
# appendfsync always
appendfsync everysec
# appendfsync no
            通过配置redis.conf下的appendonly属性为yes;设置appendfilename;配置同步文件策略为everysec
        2)AOF执行过程
            * 所有写入命令追加到aof_buf缓冲区中
            * aof缓冲根据对应的策略同步到硬盘
            * aof文件越来越大时需要定期对aof文件做重写操作,以达到压缩的目的
            * redis服务器重启时,加载aof文件进行数据恢复
        3)文件同步策略
            * always 命令写入aof_buf后调用系统fsync操作同步到AOF文件,fsync完成后线程返回
            * everysec 命令写入aof_buf后调用系统write操作,write操作完成后线程返回,fsync同步文件操作由专门线程每秒调用一次
            * no 命令写入aof_buf后调用系统write操作,不对AOF文件做fsync同步。
            注意:默认选择的everysec策略为最优方案,兼具了性能和数据安全
        4)重写机制
            命令的不断写入导致aof文件越来越大,当超过一定大小后,redis会执行重写策略来压缩文件体积
            重写是将redis中现有的数据转换为写命令同步到新的aof文件中的过程
            重写如何压缩文件体积?
            * 超时数据不再写入文件
            * 原无效命令不再写入新文件
            * 合并多条命令
            触发方式?
            * 手动触发 调用bgrewriteaof命令
            * 自动触发 根据下面两个参数来确定重写时机,同时满足时则触发重写
auto-aof-rewrite-percentage 100 #代表当前aof文件空间和上一次重写后的aof文件空间比值
auto-aof-rewrite-min-size 64mb #运行aof文件重写时的文件最小体积
关注
打赏
1655041699
查看更多评论
立即登录/注册

微信扫码登录

0.1229s