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

AOF(Append Only File)

一、是什么

以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),
只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis
重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

二、Aof保存的是appendonly.aof文件

三、配置位置

四、AOF启动/修复/恢复

1.正常恢复

1)启动:设置Yes

修改默认的appendonly no,改为yes

2)将有数据的aof文件复制一份保存到对应目录(config get dir)

3)恢复:重启redis然后重新加载

2.异常恢复

1)启动:设置Yes

修改默认的appendonly no,改为yes

2)备份被写坏的AOF文件

3)修复:

Redis-check-aof --fix进行修复

4)恢复:重启redis然后重新加载

五、Rewrite

1.是什么:

AOF采用文件追加方式,文件会越来越大为避免出现此种情况,新增了重写机制,
当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,
只保留可以恢复数据的最小指令集.可以使用命令bgrewriteaof

2.重写原理

AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename),
遍历新进程的内存中数据,每条记录有一条的Set语句。重写aof文件的操作,并没有读取旧的aof文件,
而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似

3.触发机制

Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发

六、优势

1.每修改同步:appendfsync always   同步持久化 每次发生数据变更会被立即记录到磁盘  性能较差但数据完整性比较好

2.每秒同步:appendfsync everysec    异步操作,每秒记录   如果一秒内宕机,有数据丢失

3.不同步:appendfsync no   从不同步

七、劣势

1.相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb

2.Aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同

八、小总结

原文地址:https://www.cnblogs.com/pony1223/p/9672489.html

时间: 2024-10-10 05:11:12

Redis学习六:Redis的持久化-AOF的相关文章

redis学习三 redis持久化

1,快照持久化 1简介 redis可以通过创建快照来获得某个时间点上的内存内容的数据副本,有了副本之后,就可以将副本发送到其他redis服务器上从而创建相同数据的从服务器,同时快照留在原地以便重启redis的时候实现数据恢复. 2配置 save 60 1000  快照生成策略  如果服务器距离上一次成功生成快照已经超过六十秒,并且期间执行了至少1000次写操作. stop-writes-on-bgsave-error yes 创建快照文件失败后是否继续执行写命令 rdbcompression y

Redis学习总结(1)——数据持久化

以前研究Redis的时候,很多东西都不太明白,理解得也不太深,现在有时间重新拾起来看看,将一些心得记录下来,希望和大家一起探讨. 一.简介 Redis是一个单线程高可用的Key-Value存储系统,和Memcached类似,但是实际使用上最大的区别有两方面: Redis支持多种数据结构类型的value,比如string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型): Memcached在出现系统瘫痪的情况下,无法实现系统恢复,而

快速掌握Redis——第六招:持久化 (数据备份与恢复)

1 何为持久化 redis 是内存数据库,掉电会丢失,转移数据不便.持久化就是内存数据到硬盘数据的转化. 当然,也可以硬盘到内存(备份的概念,保存,恢复). 2 怎么实现 两种方法:快照方式(rdb)+日志方式(aof) 快速+最大化redis性能+方便:rdb 模式 更持久:aof 模式 建议:合理的同时使用这两种方式. 2.1 rdb 快照模式 Snapshotting (快照) 语法 快照是默认的持久化方式(内存全拷贝).这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件

Redis学习-4-2 Redis持久化

1.持久化: 数据保存到一个不会丢失的地方就是持久化,可认为是永久存储的: 2.Redis持久化: Redis的数据存储在内存中,是不安全的,所以Redis有自己的持久化方案,将内存数据定期保存到磁盘文件中,当Redis崩溃了或者计算机意外关机了,重启Redis服务的时候,将磁盘中文件恢复到内存中来: 3.Redis持久化方案: 1.RDB: Redis Data Base,就是在指定的时间间隔内将内存中的数据集快照写入磁盘,数据恢复时将快照文件直接再读到内存. RDB保存了在某个时间点的数据集

Redis学习(6)-Redis高级实用特性

Redis高级实用特性: 1.安全性2.主从复制3.事务处理4.持久化机制5.发布订阅消息6.虚拟内存的使用 安全性: 设置客户端连接后进行任何其他指定前需要使用的密码警告:因为Redis速度相当快,所以一台比较好的服务器下一个外部的用户可以在一秒钟进行150k次的密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解配置方法: requirepass beijing(在配置文件中配置密码) auth beijing(授权方式1) redis-cli -a beijing(授权方式2) 主

redis学习之redis的安装,类库及demo

一.redis的安装 a.系统环境和说明 Linux操作系统选用Ubuntu, Redis的版本选取目前的最新稳定版本2.8.9.客户端选用了Redis的Java版本jedis b.安装步骤 wgethttp://download.redis.io/releases/redis-2.8.9.tar.gz c. 在目录下,解压按照包,生成新的目录redis-2.8.9 tar xvfz redis-2.8.9.tar.gz d.  进入解压之后的目录,进行编译 cd  redis-2.8.9 su

Redis学习一Redis的介绍与安装部署

NoSql 介绍 NoSql 是key-value形式存储,和传统的数据库不一样,不一定遵循传统数据库的一些基本要求,比如遵循SQL标准(insert\update\delete\select).ACID属性(原子性 一致性 隔离性 持久性).表结构等等,这些数据库有具有以下特点:非关系型的.分布式的.开源的.水平可扩展的. redis 的介绍 redis 是一个开源的,先进的key-value存储.它通常被称为数据结构服务器,因为键可以包含字符串(string).哈希(hash).链表(lis

redis学习系列——redis持久化

1.写操作的流程 2.RDB快照-redis的第一个持久化策略 第一种是以快照的形式持久化到本地磁盘(RDB文件). 持久化策略是: 1.配置(save N M)在N秒内,redis至少发生M次修改,则redis持久化快照到本地磁盘. after 900 sec (15 min) if at least 1 key changed 2.手动持久化:手动save或bgsave快照. 工作原理:当redis进行持久化时,redis会fork出一个子进程,然后在子进程中循环所有的数据,将数据写入一个临

Redis学习(三) —— 持久化

参考文档 [1]: Redis官方文档 持久化(persistence) [2]: 一个经典面试题:如何保证缓存与数据库的双写一致性? 原文地址:https://www.cnblogs.com/fonxian/p/10931979.html