Redis进阶学习--02| AOF日志:宕机了,Redis如何避免数据丢失?
二、AOF日志:宕机了,Redis如何避免数据丢失?
一.AOF 日志是如何实现的(Redis是追求速率优先的设计,先执行命令,后写入日志(磁盘))
AOF日志与Redis命令执行的顺序是先执行命令写入内存,之后再写入日志中。写后日志这种方式,就是先让系统执行命令,只有命令能执行成功,才会被记录到日志中,否则,系统就会直接向客户端报错。所以,Redis 使用写后日志这一方式的一大好处是,可以避免出现记录错误命令的情况。
除此之外,AOF 还有一个好处:它是在命令执行后才记录日志,所以不会阻塞当前的写操作。
不过,AOF 也有两个潜在的风险。首先,如果刚执行完一个命令,还没有来得及记日志就宕机了,那么这个命令和相应的数据就有丢失的风险。如果此时 Redis 是用作缓存,还可以从后端数据库重新读入数据进行恢复,但是,如果 Redis 是直接用作数据库的话,此时,因为命令没有记入日志,所以就无法用日志进行恢复了。
二.AOF的三种写回策略(写回指的是,AOF内存缓冲区的数据写入磁盘)
1、Always(同步写回)
每个写命令执行完,立马同步地将日志写回磁盘
2、Everysec(每秒写回)
每秒写回:每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,每隔一秒把缓冲区中的内容写入磁盘
3、No(操作系统控制的写回)
操作系统控制的写回:每个写命令执行完,只是先把日志写到 AOF 文件的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
三.AOF 重写机制
1、什么是AOF重写(AOF重写,就是生成一个新的AOF文件,将之前AOF文件中的命令进行合并)
AOF 重写机制就是在重写时,Redis 根据数据库的现状创建一个新的 AOF 文件,也就是说,读取数据库中的所有键值对,然后对每一个键值对用一条命令记录它的写入。比如说,当读取了键值对“testkey”: “testvalue”之后,重写机制会记录 set testkey testvalue 这条命令。这样,当需要恢复时,可以重新执行该命令,实现“testkey”: “testvalue”的写入。
Redis进阶学习--02| AOF日志:宕机了,Redis如何避免数据丢失?相关推荐
- Redis 进阶学习笔记
Redis进阶学习笔记 阅读Redis.conf配置文件 # 61, 绑定的 IP , 一般注释掉该命令,这个吗,命令表示仅接受本机的(IP为本机)客户端连接, bind 127.0.0.1 # 80 ...
- 如何设计不宕机的 Redis 高可用服务?
随着业务的不断发展和扩张我们需要更加稳定和高效的 Redis 服务,这是业务发展的必然趋势也是个人能力进阶的最高境界,我们需要一个高可用的 Redis 服务,来支撑和保证业务的正常运行. 我们本文的面 ...
- Redis进阶学习08--多级缓存
Redis进阶学习08--多级缓存 什么是多级缓存 JVM进程缓存 环境准备 docker安装mysql docker安装nginx 反向代理 初识Caffeine 实现JVM进程缓存 需求 实现 L ...
- 恢复Redis中主、从库宕机
1.什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是一个独立进程,功能有二个: 监控主数据库和从数据库是否运行正常: 主数据出现故障后自动将从数据库转化为主数据库: 2.原理 单个哨兵的架构 ...
- Redis中主、从库宕机如何恢复?
作者 | tamir_2017 来源 | blog.csdn.net/py_tamir/article/details/82555338 1.什么是哨兵 哨兵是对Redis的系统的运行情况的监控,它是 ...
- Redis 内存数据满了,会宕机吗?
Redis 数据库内存数据满了,会宕机吗? 答案是:不会让它出现存满的情况,在使用Redis的时候我们要配置Redis能使用的最大的内存大小,存到一定容量的时候还有Redis的内存淘汰策略呢,还有LR ...
- 面试官:Redis 内存数据满了,会宕机吗?
背景 Redis 数据库内存数据满了,会宕机吗?答案是:不会让它出现存满的情况,在使用Redis的时候我们要配置Redis能使用的最大的内存大小,存到一定容量的时候还有Redis的内存淘汰策略呢,还有 ...
- redis快照持久化和aof日志持久化
持久化就是即使断电/重启需要存储的数据不会丢失,即将数据存储在设备中,一般存在硬盘内 redis的持久化有2种方式 :1-rdb快照 2-aof日志,可以通过配置redis.conf文件进行配置 r ...
- redis的读写分离和主机宕机
主写从读,读写分离 主:只允许写操作 从:只允许读操作 主机宕机,从机原地待命 主机宕机后,他的从机的状态会变成未启用,因为它要等他的老大,也就是主机正常运行后,它才工作 模拟一下 关闭主机的服务 r ...
最新文章
- php header setcookie,php中header头设置Cookie与内置setCookie的区别,和js对cookie操作
- MSN Cartoon 试用
- 中间表增加额外字段_如何定制分表中间件
- 4位并行加载寄存器设计
- Android官方开发文档Training系列课程中文版:手势处理之ViewGroup的事件管理
- ant-design-vue 快速入手及常用标签
- 《HTML5开发手册》——1.5 初学者“菜谱”:使用nav元素创建导航
- linux cpu 工作频率,Linux系统限制CPU工作频率(示例代码)
- 大数据各组件默认端口
- Andoid游戏【真情表白】让你心爱的人在游戏中感受真情!
- 3.2. tensorflow2实现Wileoxon秩和检验法(上) ——python实战
- 怎样用计算机求成绩平均分,2017年计算机一级WPS辅导:WPS2007中求特定比例成绩的平均分...
- 关于网页设计工具的50个新的资源和灵感
- 利用Python对Excel数据进行处理
- 运动模糊(Montion blur)
- js设计模式之单例模式
- 树莓派Pico开发板的C/C++开发环境搭建(VSCode+PlatformIO)
- 【直击DTCC】宝存CEO阳学仕:如何保障SSD的IO确定性?
- 计算机中丢失ucore46.dll,Creo6.0 Purge功能 如果试过各种方法还不能使用,可以试下这个方法...
- Java 时间间隔计算工具类
热门文章
- 一个朋友写的新浪灌水机一部
- Unity3d NGUI的使用(二)(UILabel中文字体及可点击的字体)
- 臭名昭著的MOS管米勒效应
- 在fluent中引入visual studio
- 只要工具不要“霸”——百度搜霸与百度工具栏
- 【LeetCode解题报告】《算法基础012_因子和》- Java
- 基于CentOS7的Matomo网站统计分析工具
- python智慧树期末_智慧树大数据python期末答案
- php贴吧源码,FluxBB v1.5.11 php论坛贴吧源码下载
- 共话机器翻译新风向,第二届小牛翻译论坛启幕在即