Redis的AOF持久化

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

Redis的AOF的配置

1. 找到redis.conf 开启AOF

# Please check http://redis.io/topics/persistence for more information.appendonly no

默认是no 改为yes 就是开启AOF持久化

2. 生成AOF备份文件的文件名称

# The name of the append only file (default: "appendonly.aof")appendfilename "appendonly.aof"

3. 生成AOF备份文件的文件路径

# Note that you must specify a directory here, not a file name.
dir  /usr/local/redis/bin/

4. AOF备份文件的写入策略

# appendfsync always
appendfsync everyse

默认值everysec,每秒写一次(调用flush)。另外两个值,always | no,分别表示每次redis写命令之外就写文件,和由操作系统保证。always对硬盘压力大,everysec是一个平衡值,no对硬盘压力最小,但调度由系统控制,丢失数据风险最大.

5. 重写文件是否需要同步

# If you have latency problems turn this to "yes". Otherwise leave it as
# "no" that is the safest pick from the point of view of durability.no-appendfsync-on-rewrite no

是否在后台写时执行同步,默认值no(表示需要同步).这里的后台写,表示后台正在重写文件(包括bgsave和bgrewriteaof。其实关掉bgsave之后,主要的即是aof重写文件了).no表示新的主进程的set操作会被阻塞掉,而yes表示新的主进程的set不会被阻塞,待整个后台写完成之后再将这部分set操作同步到aof文件中。但这可能会存在数据丢失的风险(机率很小),如果对性能有要求,可以设置为yes,仅在后台写时会异步处理命令.

6.AOF文件重写增长比例

auto-aof-rewrite-percentage 100

aof文件增长比例,指当前aof文件比上次重写的增长比例大小。aof重写即在aof文件在一定大小之后,重新将整个内存写到aof文件当中,以反映最新的状态(相当于bgsave)。这样就避免了,aof文件过大而实际内存数据小的问题(频繁修改数据问题).

7.AOF文件重写最小的文件大小

auto-aof-rewrite-min-size 64mb

AOF文件重写最小的文件大小,即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小).此变量仅初始化启动redis有效.如果是redis恢复时,则lastSize等于初始aof文件大小.

AOF文件的重写

AOF为何有重写的机制

redis中的数据是有限的,很多数据可能会自动过期,也有可能会被用户删除,但是这些操作都会被AOF文件记录下来,所有有可能存在AOF文件越来越大的情况,意思就是说,重建数据集根本不需要执行所有AOF记录的命令,为了处理这种情况,会有一种rewrite策略,在redis 2.4之前是需要手动执行BGREWRITEAOF命令来进行重写AOF文件,redis 2.4版本之后提供了自动rewrite的操作。我们可以配置rewrite的策略

就是上面提到的参数

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

最少AOF文件需要达到64mb就会进行重写,重写了之后,当检测到当前的AOP文件增长幅度大于100%,也就是64mb,即当前的AOF文件大小为128mb的时候,就会自动触发对AOF进行重写操作。

快照备份易恢复,文件也小,但是如果遇到宕机等情况的时候快照的数据可能会不完整。AOF备份,数据完整度高,但是随着系统的运行,AOF文件的体积会越来越大,极其占用硬盘的空间,AOF文件的重写在一定程度可以缓解这个问题。

当AOF的备份文件过大时,手动输入bgrewriteaof命令,进行文件重写

1.将redis.conf中的RDB持久化参数注释

#save 900 1
#save 300 10
#save 60 10000

2.删除目录下的dump.rdb

[erayt@ERAYT-01 bin]$ rm -rf dump.rdb

3.将appendonly no改为 yes

# Please check http://redis.io/topics/persistence for more information.appendonly yes

开启AOF持久化

4.执行bgrewriteaof命令

127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started
127.0.0.1:6379>

5.查看备份目录,生成aof文件

[erayt@ERAYT-01 bin]$ ls
appendonly.aof  log-redis.log  redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis.conf  redis-sentinel  redis-server
[erayt@ERAYT-01 bin]$

Redis的AOF的配置相关推荐

  1. Redis安装及基本配置

    一.Redis介绍 1.Redis是一个key-value存储系统 2.官方站点http://redis.io 3.Redis和Memcached类似,但支持数据持久化 4.支持更多value类型,除 ...

  2. redis rdb aof区别_Redis(三):持久化RDB,fork.copyonwrite,AOF,RDBamp;AOF混合使用

    Redis的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证Redis的数据不会因为故障而丢失,这种机制就是Redis的持久化机制. Redis的持久化有两种,第一种是快照, ...

  3. redis rdb aof区别_理解Redis的持久化机制:RDB和AOF

    什么是Redis持久化? Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存当中,在处理客户端请求时,所有操作都在内存当中进行,如下所示: 这样做有什么问题呢? 注 意 文末有:362 ...

  4. redis rdb aof区别_聊一聊RDB、AOF在redis持久化里的底层原理

    什么是Redis持久化? Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存当中,在处理客户端请求时,所有操作都在内存当中进行,如下所示: 这样做有什么问题呢? 其实,只要稍微有点计算 ...

  5. redis rdb aof区别_10分钟彻底理解Redis的持久化机制:RDB和AOF

    点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:张君鸿 juejin.im/post/5d09a9ff51882577eb133aa ...

  6. redis rdb aof区别_Redis的持久化机制:RDB和AOF

    什么是Redis持久化? Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存当中,在处理客户端请求时,所有操作都在内存当中进行,如下所示: 对于只把Redis当缓存来用的项目来说,数据 ...

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

    AOF持久化 AOF全称append only file持久化:以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的: AOF主要作用是解决了数据实时持久化的问题: 使 ...

  8. redis应用之安装配置介绍

    一.redis介绍: 1.redis定义: Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.从2010年3月1 ...

  9. redis之AOF和RDB持久化

    写在前面 redis数据存储在内存,为了避免服务器重启或者是宕机导致数据全部丢失,提供了数据持久化机制,有AOF(Append Only File)和RDB,接下来我们分别看下. 1:AOF 如下是我 ...

最新文章

  1. 浅析网站设计风格对网站建设的重要性
  2. django-ORM单表操作
  3. spring部分注解
  4. 分享Silverlight/WPF/Windows Phone一周学习导读(11月14日-11月20日)
  5. Nacos,阿里开源,是真的香!!
  6. 《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(5) -- 安全性...
  7. 拉普拉斯变换公式表_复变函数之拉普拉斯变换小结
  8. 100行代码实现最简单的基于FFMPEG+SDL的视频播放器
  9. 线段树(updata+query)
  10. Excel做题记录——整数规划优化模型
  11. 基于单片机的智能交通灯
  12. CPA七--应交增值税(转载)
  13. 人工雨量计_自动站与人工站遥测雨量计降水量对比分析
  14. 第8章 卷积神经网络
  15. 计算机组成原理期中考,计算机组成原理期中考卷
  16. VisualSVN 5.1.7破译License Key
  17. 4大主流CPU处理器技术架构详解
  18. 双屏幕显示,两个显示器分辨率不一样处理
  19. ajax的eval的作用,为什么用eval()
  20. c语言双精度浮点数,使用C语言的十进制(浮点数,双精度)

热门文章

  1. 《嵌入式系统可靠性设计技术及案例解析》读书笔记(七)
  2. SQL_TRACE与tkprof分析
  3. java.util.concurrent包(6)——CyclicBarrier使用
  4. FOLDER FORM 问题
  5. 获取checkbox后面的文本内容
  6. OSPF系列小实验之6:网络类型对邻居关系及路由学习的影响
  7. ASP.NET 路由
  8. VS2012 使用条件断点和内存断点
  9. Windows 7 下 QT5 开发环境搭建
  10. ZAM 3D 制作3D动画字幕 用于Xaml导出