Redis的AOF功能

标签: redis aof 功能 | 发表时间:2014-05-22 08:14 | 作者:blueheart20
出处:http://blog.csdn.net

引言:  Redis是基于内存的数据库,同时也提供了若干持久化的方案,允许用户把内存中的数据,写入本地文件系统,以备下次重启或者当机之后继续使用。本文将描述如何基于Redis来设置AOF功能


什么是Redis的AOF?

AOF是AppendOnly File的缩写,是Redis系统提供了一种记录Redis操作的持久化方案,在AOF生成的文件中,将忠实记录发生在Redis的操作,从而达到在Redis服务器重启或者当机之后,继续恢复之前数据状态的机制。


以下我们来简要看看如何在Redis中使用AOF,并验证整个过程:

A. Redis中主要的AOF设置

   appendonly yes  ---- 打开aof设置,同时将快照功能置于低优先级的位置

  appendfsync no
        当设置appendfsync为no的时候,Redis不会主动调用fsync去将AOF日志内容同步到磁盘,所以这一切就完全依赖于操作系统的调试了。对大多数Linux操作系统,是每30秒进行一次fsync,将缓冲区中的数据写到磁盘上。
   appendfsync everysec
        当设置appendfsync为everysec的时候,Redis会默认每隔一秒进行一次fsync调用,将缓冲区中的数据写到磁盘。但是当这一次的fsync调用时长超过1秒时。Redis会采取延迟fsync的策略,再等一秒钟。也就是在两秒后再进行fsync,这一次的fsync就不管会执行多 长时间都会进行。这时候由于在fsync时文件描述符会被阻塞,所以当前的写操作就会阻塞。
        结论就是,在绝大多数情况下,Redis会每隔一秒进行一 次fsync。在最坏的情况下,两秒钟会进行一次fsync操作。这一操作在大多数数据库系统中被称为group commit,就是组合多次写操作的数据,一次性将日志写到磁盘。
   appendfsync always
        置appendfsync为always时,每一次写操作都会调用一次fsync,这时数据是最安全的,当然,由于每次都会执行fsync,
所以其性能也会受到影响。

B. 启动redis-server

   

C. 打开redis-cli,操作数据

   

D.  查看aof文件

  

从上面的图示中,可以发现,在AOF的文件中,它忠实记录了发生在Redis上的操作,从而达到了还原数据的目的。当然,这个方式并不是一种效率很高的方式。主要的问题在于,有可能对于部分数据,进行了大量的操作。在这种情况下就必须产生大量的冗余操作记录。针对这个问题的解决办法,我将在后续的blog中涉及到。


作者:blueheart20 发表于2014-5-22 0:14:12 原文链接
阅读:91 评论:0 查看评论

相关 [redis aof 功能] 推荐:

Redis的AOF功能

- - CSDN博客数据库推荐文章
引言:  Redis是基于内存的数据库,同时也提供了若干持久化的方案,允许用户把内存中的数据,写入本地文件系统,以备下次重启或者当机之后继续使用. 本文将描述如何基于Redis来设置AOF功能. AOF是AppendOnly File的缩写,是Redis系统提供了一种记录Redis操作的持久化方案,在AOF生成的文件中,将忠实记录发生在Redis的操作,从而达到在Redis服务器重启或者当机之后,继续恢复之前数据状态的机制.

redis持久化rdb aof简介

- - 互联网 - ITeye博客
rdb方式的持久化是通过快照完成的,当符合一定条件时redsi会自动将内存中的所有数据进行快照并存储到硬盘上. 默认存储在redis根目录的dump.rdb文件中. rdb是redis默认采用的持久化方式,配置信息在配置文件redis.conf中. 定期将内存数据生成快照(即某个时间点上数据的备份) 然后存储在硬盘上.

Redis AOF刷新策略分析(转载)

- - 互联网 - ITeye博客
此文为转载,原文:  http://afei2.sinaapp.com/?p=536.    redis支持使用aof来进行持久化,防止数据丢失,aof的刷新策略通过参数appendfsync控制,有三个值:always、everysec、no,默认是everysec.    下面从源码的角度剖析一下aof的刷新策略.

Redis集群功能说明

- gOODiDEA - NoSQLFan
虽然目前可以通过在客户端做hash的方法来构建Redis集群,但Redis原生的集群支持还是颇受期待. 本文是对Redis集群功能官方描述文档的一个翻译,译者是@PPS萝卜同学,也感谢他的投稿分享. 这篇文档主要是为了说明正在进展中的Redis集群功能. 文档主要分为两个部分,前一部分主要介绍我在非稳定分支已完成的代码,后一部分主要介绍还有哪些功能待实现.

REDIS GEO: REDIS新增位置查询功能

- - 编程语言 - ITeye博客
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/144.html. 移动互联网增进了人与人之间的联系,其中基于位置信息的服务(Location Based Service,LBS)起到很重要的促进作用. 在移动互联网的大环境下,每个手机都变成了一个位置追踪设备,为人们提供了非常丰富的位置服务.

使用redis的有序集合实现排行榜功能 - 简书

- -
排行榜是业务开发中常见的一个场景,如何设计一个好的数据结构能够满足高效实时的查询,下面我们结合一个实际例子来讨论一下. 选手报名参加活动,观众可以对选手进行投票,每个观众对同一名选手只能投一票,活动期间最多投四票. 接口1:返回TOP 10的选手信息及投票数. 接口2:返回活动总参与选手数及总投票数.

Redis 负载监控——redis-monitor

- - ITeye资讯频道
redis-monitor是一个Web可视化的 redis 监控程序. 使用 Flask 来开发的,代码结构非常简单,适合移植到公司内网使用. redis 服务器信息,包括 redis 版本、上线时间、 os 系统信息等等. 实时的消息处理信息,例如处理 command 数量、连接总数量等. 内存占用、 cpu 消耗实时动态图表.

redis实现高并发下的抢购/秒杀功能 - 周伯通的麦田 - 博客园

- -
高并发的解决思路(点此进入查看),今天再次抽空整理下实际场景中的具体代码逻辑实现吧:. 抢购/秒杀是如今很常见的一个应用场景,那么高并发竞争下如何解决超抢(或超卖库存不足为负数的问题)呢. 查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数.

使用MQTT协议+Redis缓存实现APP登录顶号功能 | jwcqc个人笔记

- -
大家在玩游戏或使用QQ等IM工具时,想必都见到过弹出被顶号或者是您的账号于xx时间在另一设备登录,您已被迫下线这样的提示,然后不得不点退出按钮退出整个应用,或者点击重新登录把另一设备再顶下来. 最近我参与的一个项目,正好就有这样的需求,而且,由于我们项目中已经使用到了MQTT协议进行消息推送,实现远程控制,后台用Java实现,缓存使用了Redis,因此,正好可以利用现有的技术来实现这个功能.

Redis 起步

- - 博客园_首页
Rdis和JQuery一样是纯粹为应用而产生的,这里记录的是在CentOS 5.7上学习入门文章:. Redis是一个key-value存储系统. 和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、sets(集合)和zsets(有序集合)几种数据类型.