由redis持久化AOF重写想到Excel保存过程

redis的持久机制有两种,一种是snapshot,另一种是AOF重写。第一种机制是按事先定制的策略,周期性地异步或同步将数据从内存同步至磁盘,在客户端的操作是由SAVE或BGSAVE命令执行。而AOF重写则是记录写操作至指定的文件尾部实现持久化。AOF重写过程如下:

(1) redis主进程通过fork创建子进程

(2)子进程根据当前redis内存中的数据生成数据库重建命令序列到临时文件中

(3)父进程继承client的新请求,把请求中的写操作继续追加至原来的AOF文件(而不是直接写入临      时文件,避免写操作失败带来的问题);额外地,这些新的写请求还会被放置于一个缓冲队列中

(4)子进程重写完成,会通知父进程,父进程把缓冲中的命令写到临时文件中

(5)父进程将临时文件替换掉旧的AOF文件

AOF重写使我想到了Excel的保存过程:

编辑test.xlsx,

(1)创建临时文件xxxx.tmp,把Excel缓冲内容写到xxxx.tmp中

(2)把原来的test.xlsx文件重命名为另一个临时文件yyyy.tmp

(3)把xxxx.tmp重命名为test.xlsx

Excel保存过程明显是更复杂的,复杂的设计往往伴随着更多出问题的概率,所以微软的老用户或多或少经历过保存文件时发生保存失败的问题。

与Excel保存机制不同的是,AOF重写并没有将原来的AOF文件重命名为另一个文件后再替换掉旧AOF文件,那么AOF重写这种机制的可靠性会差吗?其实不会,即使是AOF重写过程最后替换旧文件过程错误损坏旧文件同时不行临时文件也损坏,内存中依然存有数据和缓冲过的操作。

(注:Excel保存过程参考林沛满大神的《wireshark网络分析就是这么简单》一书)

时间: 2025-01-09 05:39:55

由redis持久化AOF重写想到Excel保存过程的相关文章

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

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

Redis持久化——AOF(二)

核心知识点: 1.AOF:以独立日志的方式记录写命令,重启时再执行命令.与RDB不同的是解决数据持久化的实时性,可以记录所有写操作. 2.AOF工作流程:写入命令.文件同步.文件重写.文件加载. 3.命令写入 a.将命令以文本协议格式保存在缓存中. b.为什么使用文本协议格式?兼容性.避免二次开销.可读性. c.为什么写入到缓存?这样不会受制于磁盘的IO性能 4.文件同步:从内存同步到文件中,有三种机制,使用的系统命令是write或fsync. (1).write会触发写延迟,依赖系统的调度机制

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之AOF重写及其实现原理

Reference: https://blog.csdn.net/hezhiqiang1314/article/details/69396887 AOF 重写AOF 持久化是通过保存被执行的写命令来记录数据库状态的,所以AOF文件的大小随着时间的流逝一定会越来越大:影响包括但不限于:对于Redis服务器,计算机的存储压力:AOF还原出数据库状态的时间增加:为了解决AOF文件体积膨胀的问题,Redis提供了AOF重写功能:Redis服务器可以创建一个新的AOF文件来替代现有的AOF文件,新旧两个文

redis 持久化之 RDB & AOF

Redis 持久化实现方式 快照对数据某一时间点的完整备份.例如Linux 快照备份.Redis RDB.MySQL Dump. 日志将数据的所有操作都记录到日志中,需要恢复时,将日志重新执行一次.MySQL biglog.Redis AOF. RDB 什么是 RDB 将redis内存中的数据,完整的生成一个快照,以.rdb结尾的文件保存在硬盘上,当需要恢复时,再从文件加载到内存中. RDB 三种触发方式 save命令触发(同步) [[email protected] ~]$ redis-cli

精讲Redis持久化

前言 在上一篇文章中,介绍了精讲Redis内存模型,从这篇文章开始,将依次介绍Redis高可用相关的知识--持久化.复制(及读写分离).哨兵.以及集群. 一.Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义. 我们知道,在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%.99.99%.99.999% 等等).但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离.快速

redis持久化说明

摘自:https://www.toutiao.com/a6584194392104370692/?tt_from=weixin&utm_campaign=client_share&timestamp=1533093100&app=news_article&utm_source=weixin&iid=39271855323&utm_medium=toutiao_android&wxshare_count=1 感谢文章的所有者 一.Redis高可用概述

深入Redis持久化

一.Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义. 我们知道,在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%.99.99%.99.999% 等等).但是在Redis语境中,高可用的含义似乎要宽泛一些,除了保证提供正常服务(如主从分离.快速容灾技术),还需要考虑数据容量的扩展.数据安全不会丢失等. 在Redis中,实现高可用的技术主要包括持久化.复制.哨兵和集群,下面分别说明它们的作用,以及