Redis的持久化-AOF

Redis的持久化AOF模式,以日志的形式记录服务器所处理的每一个写操作,在Redis服务启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。

AOF的优点:

1、可以带来更高的数据安全性。

2、由于对日志文件的写入操作采用的是append模式,因此在写入过程汇总即使出现宕机,也不会破坏日志文件中已经存在的内容,然而如果我们本次操作写入一半数据就出现系统崩溃,可以在Redis下一次启动之前,通过redis-check-aof工具帮助解决数据一致性的问题。

3、如果日志过大,Redis可以启动rewrite机制,即Redis以append模式不断的将修改数据写入到老的磁盘文件中,同时Redis还会创建一个新的文件用于记录此期间有哪些修改指令被执行,rewrite切换时可以更好的保证数据安全性。

4、AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作,可以通过该文件完成数据的重建。

AOF的缺点:

1、相同的数据的数据集,AOF文件通常要大于RDB文件。

2、同步策略的不同,AOF在运行效率上往往会慢于RDB,每秒同步策略的效率是比较高的,同步禁用策略的效率和RDB一样高效。

在Redis的配置文件中存在三种同步方式,它们分别是:

1、appendfsync   always:每次有数据修改发生时都会写入AOF文件。

2、appendfsync everysec:每秒钟同步一次,该策略为AOF的缺省策略。

3、appendfsyn no:从不同步,高效的那是数据不会被持久化。

如何修复损坏的AOF文件?

1、将现有已经损坏的AOF文件额外复制出来一份。

2、执行‘redis-check-aof -- fix <filename>‘命令来修复损坏的AOF文件。

3、用修复后的AOF文件重新启动Redis服务。

redis.conf的配置,将appendonly改为yes

Redis一启动就会在dir目录下生成appendonly.aof,开始这个文件是0字节的。

查看key,有多少

dump.rdb文件时33字节,为什么之前设置的key,没有了呢?

原因:一旦appendonly设置为yes,系统会优先读appendonly.aof文件,而不是dump.rdb

由于appendonly.aof是空的,所以看到key也是空的。

设置一些key

appendonly.aof就变成了112字节

查看appendonly.aof文件,其实是将上面设置的命令记录了一下。

AOF的启动装载

1、AOF优先于RDB

2、RDB的性能优于AOF,因为没有重复

3、Redis一次性将数据加载到内存中,一次性预热

Redis的装载源码如下:

AOF的rewrite

AOF的rewrite参数

时间: 2024-08-16 01:18:50

Redis的持久化-AOF的相关文章

Redis学习六:Redis的持久化-AOF

AOF(Append Only File) 一.是什么 以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作 二.Aof保存的是appendonly.aof文件 三.配置位置 四.AOF启动/修复/恢复 1.正常恢复 1)启动:设置Yes 修改默认的appendonly no,改为yes 2)将有数据

redis 数据持久化 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的修改

Redis数据持久化机制AOF原理分析二

Redis数据持久化机制AOF原理分析二 分类: Redis 2014-01-12 15:36  737人阅读  评论(0)  收藏  举报 redis AOF rewrite 目录(?)[+] 本文所引用的源码全部来自Redis2.8.2版本. Redis AOF数据持久化机制的实现相关代码是redis.c, redis.h, aof.c, bio.c, rio.c, config.c 在阅读本文之前请先阅读Redis数据持久化机制AOF原理分析之配置详解文章,了解AOF相关参数的解析,文章链

Redis持久化--AOF

除了RDB持久化之外,Redis还提供了AOF(Append Only File)持久化功能.与RDB持久化通过保存数据库中键值对来保存数据库的状态不同,AOF持久化是通过保存Redis服务器所执行的写命令来记录数据库的状态.被写入AOF文件的所有命令都是以Redis的命令请求协议格式保存的,该格式是一种纯本文的格式,所以可以通过直接打开AOF文件,观察里面的类容. 1 AOF持久化的实现 AOF持久化功能的实现可以分为:命令追加(append),文件写入(write),文件同步(sync)三个

redis 持久化 AOF RDB

Redis的AOF持久化策略是将发送到redis服务端的每一条命令都记录下来,并且保存到硬盘中的AOF文件中,类似打日志文件,来一条命令就记录一条. AOF设置 AOF文件的位置和RDB文件的位置相同,都是通过dir参数设置,默认的文件名是appendonly.aof,可以通过appendfilename参数来修改. AOF测试 当客户端向服务器发送一些redis命令时,Redis会将所执行的命令记录到aof文件中,如下所示: 当redis服务器重启后,会将执行该aof文件,达到数据恢复的目的.

redis 系列17 持久化 AOF

一.概述 除了上篇介绍的RDB持久化功能之外,Redis还提供了AOF(Append Only File)持久化功能.与RDB保存数据库中的键值对来记录数据库状态不同,AOF是通过保存redis服务器所执行的写命令来记录数据库状态的.AOF持久化方式记录每次对服务器写的操作,当服务器启动时,就会通过载入和执行AOF文件中保存的命令来还原服务器关闭之前的数据库状态,并在服务器载入AOF文件并还原数据库状态时打印日志. 被写入AOF文件的所有命令都是纯文本格式,可以直接打开一个AOF文件来观察.所有

第五章:Redis持久化-AOF持久化

AOF持久化 AOF全称append only file持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的: AOF主要作用是解决了数据实时持久化的问题: 使用AOF 开始AOF需要设置appendonly yes,默认不开启. AOF文件名通过appendonlyname配置,默认文件名为appendonly.aof: AOF工作流程操作:命令写入(append).文件同步(sync).文件重写(rewrite).重启加载(reload): 所有写入命

redis的持久化方案RDB和AOF

RDB:快照形式,定期把内存中当前时刻的数据保存到磁盘.Redis默认支持的持久化方案.速度快但是服务器断电的时候会丢失部分数据 AOF形式:append only file.把所有对redis数据库操作的命令,增删改操作的命令.保存到文件中.数据库恢复时把所有的命令执行一遍即可.两种持久化方案同时开启使用AOF文件来恢复数据库.能保证数据的完整性,但是速度慢 两者如何选择? 如果你没有数据持久化的需求,可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache

(05)redis的持久化RDB和AOF的配置及比较

redis操作的数据是在内存中的,它支持两种方案将内存中的数据持久化到硬盘中,下面分别介绍. 1.RDB方式(默认方式) RDB持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘.打开redis.conf,如图: save 900 1:表示15分钟(900秒钟)内至少1个键被更改则进行快照. save 300 10:表示5分钟(300秒)内至少10个键被更改则进行快照. save 60 10000:表示1分钟(60秒)内至少1