redis持久化-Append-only file(缩写aof)的方式

本质:把用户执行的每个  ”写“ 指令(增加、修改、删除)都备份到文件中,还原数据的时候就是执行具体写指令。

打开redis的运行目录,选择数据库2(select 2,是空集)可以看到dump.rdb的上次保存时间是今天中午1:58

添加2条数据:

再查看dump.rdb,保存时间是现在(说明从1:58到现在没有修改过key)

在dump.rdb中可以看到刚才保存进入的数据,但是当添加第三个数据addr3时,dump.rdb的修改时间是不会变的,没有达到快照备份的频率。

现在选择标号为3数据库,添加2条数据,此时还未达到快照持久化的频率,所以默认dump.rdb中还没有这两个数据,dump.rdb的修改时间应该还是4点多

此时就可以手动发起快照持久化,可以看到备份文件修改时间已变。

 aof持久化默认是关闭的,开启aof持久化会清空redis内部的数据:

进入到redis.conf文件,修改appendonly no---》appendonly yes,并放开aof保存写指令的文件(备份文件)的注释appendfilename  appendonly.aof这一行,默认的备份文件名字可以修改。

配置文件修改需要删除旧的进程,开启新的进程,ps -A|grep redis查看redis相关的进程,进程号为1178,用命令kill -9 1178强制杀掉redis进程,重启redis服务,可以看到数据库都被清空了:

(可以看到redis目录下出现了appendonly.aof备份文件)

由于刚才给牛贝演示,所以appendonly.aof里存在了165个字节数据,备份时间是2:34,

vi appendonly.aof查看备份文件,可以看到该文件把所有的写操作全部记录下来

再往数据库中添加2条数据set addr beijing   set sex 1,可以看到appendonly.aof是实时备份的:

 aof追加备份的备份频率,打开redis.conf,可以看到有三个可以设置的备份频率:

appendfsync always: 每搞一个”写指令“就备份一次,数据最安全,系统性能最低

appendfsync everysec:每秒钟备份一次

appendfsync no:服务器不忙的时候备份,忙了 就等会。性能最高,数据不安全。

 Aof备份文件的优化处理:压缩appendonly.aof文件

执行incr 命令创建num元素并每次递增1,递增10次,num值变成10,

每秒一次的话,会备份10次,查看备份文件,可知incr 命令都被备份,备份文件大小为460个字节

执行./redis-cli bgrewriteaof压缩备份文件,一个文件从460字节---->154字节,

其实这10个命令就相当于一个命令:set num 10,redis会自动把多个incr指令变成一个set 指令。查看appendonly.aof可以看到备份保存的指令已经变了。

快照持久化保存在了dump.rdb中,aof持久化保存到了appendonly.aof中,他们两个是互补的,快照持久化做大的备份, aof做细致的备份,数据还原的时候把快照持久化和aof持久化一起还原。如果把这两个文件拷贝给别的机器,当服务器启动的时候,redis会把这2个文件从硬盘读取到redis内存

redis 数据持久化 aof方式的更多相关文章

  1. Redis数据持久化机制AOF原理分析一---转

    http://blog.csdn.net/acceptedxukai/article/details/18136903 http://blog.csdn.net/acceptedxukai/artic ...

  2. Redis数据持久化—RDB持久化与AOF持久化

    目录 Redis数据持久化-RDB持久化与AOF持久化 RDB持久化 RDB文件的创建 RDB文件的载入 自动间隔性保存 检查保存条件是否满足 AOF持久化 AOF持久化的实现 AOF文件的载入与数据 ...

  3. Redis学习笔记(5)——Redis数据持久化

    出处http://www.cnblogs.com/xiaoxi/p/7065328.html 一.概述 Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的,然而当Redis重启后,所有存 ...

  4. Redis数据持久化,安全

    一.redis数据持久化 由于redis是一个内存数据库,如果系统遇到致命问题需要关机或重启,内存中的数据就会丢失,这是生产环境所不能允许的.所以redis提供了数据持久化的能力. redis提供了两 ...

  5. Redis 数据持久化的方案的实现

    原文:Redis 数据持久化的方案的实现 版权声明:m_nanle_xiaobudiu https://blog.csdn.net/m_nanle_xiaobudiu/article/details/ ...

  6. Redis数据持久化的两种方式RDB和AOF

    由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁 盘上,当redis重启后,可以从磁盘中恢复数据.redis提 ...

  7. 峰Redis学习(8)Redis 持久化AOF方式

    第三节:Redis 的持久化之AOF 方式 AOF方式:将以日志,记录每一个操作   优势:安全性相对RDB方式高很多: 劣势:效率相对RDB方式低很多: 1)AOF方式需要配置: # Please ...

  8. 170320、使用快照和AOF将Redis数据持久化到硬盘中

    前言 我们知道Redis是一款内存服务器,就算我们对自己的服务器足够的信任,不会出现任何软件或者硬件的故障,但也会有可能出现突然断电等情况,造成Redis服务器中的数据失效.因此,我们需要向传统的关系 ...

  9. NoSql数据库Redis系列(4)——Redis数据持久化(AOF)

    上一篇文章我们介绍了Redis的RDB持久化,RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失).对于数据完整性要求很严 ...

随机推荐

  1. linux每天一小步---cat命令详解

    1 命令功能 cat命令是linux系统下的一个文本输出命令,通常用于查看文件的内容. 2 命令语法 cat  [选项参数]  文件名 3 命令参数 -n  由1开始对所有输出的内容行数编号 -b   ...

  2. 第二届CCCC赛后感想 2017-04-15 23:56 88人阅读 评论(0) 收藏

    第一次写赛后感想,也不算什么很正规的比赛,不过这次比赛的时间恰好处于思想变化的阶段,留贴纪念. 先谈谈这次比赛,弱校萌新,依靠申请进了总决赛,发现和第一届不一样,缺少了团队奖心中有点缺乏动力,比赛2个 ...

  3. Linux的进程/线程间通信方式总结

    Linux系统中的进程间通信方式主要以下几种: 同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal) * System V进程 ...

  4. JAVA常见面试题及解答

    JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...

  5. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

  6. task4: 结对编程-词频统计[修改版]

    问题描述: 读取一个文件,统计其中单词出现次数,并按从高到低的顺序显示,相同顺序的字典序排列. 思路: 基于上次的程序用正则提取出文本里的单词,然后利用字典计数(先get,为null则置1,不为nul ...

  7. jsp int转String or String转int 方法

    将字串 String 转换成整数 int?  A. 有两个方法: 1). int i = Integer.parseInt([String]); 或  i = Integer.parseInt([St ...

  8. 【MVC】使用FormCollection获取Form表单数据

    public ActionResult Create(FormCollection form) { string name = form["name"]; //姓名 string ...

  9. (zxing.net)二维码QR Code的简介、实现与解码

    一.简介 二维码QR Code(Quick Response Code)是由Denso公司于1994年9月研制的一种矩阵二维码符号,它具有一维条码及其它二维条码所具有的信息容量大.可靠性高.可表示汉字 ...

  10. C#基础之流程控制语句详解

    C#程序的执行都是一行接一行.自上而下地进行,不遗漏任何代码.为了让程序能按照开发者所设计的流程进行执行,必然需要进行条件判断.循环和跳转等过程,这就需要实现流程控制.C#中的流程控制包含了条件语句. ...