redis aof日志持久化

模板网 2021-04-14

一、aof的原理

问题:

  • 1、每个命令重写一次aof?
  • 2、某个key修改100次,产生100行记录,aof文件会很大,怎么解决?

aof重写(简化)

二、aof的配置

appendfsync always #每一个命令,都立即同步到aof安全,速度慢
appendfsync everysec #折衷方案,每秒写一次
appendfsync no #写入工作交给操作系统,由操作系统判断缓冲区大小统一写到aof同步频率低,速度快

aof重写策略:

1、bgrewriteaof命令
2、aof重写配置
auto-aof-rewrite-percentage 100 #aof文件大小比起上次重写时的大小,增长率100%时重写
auto-aof-rewrite-min-size 64mb #aof文件,至少超过64M重写

appendonly yes #是否打开aof日志功能,默认是no,如果需要改为yes即可

no-appendfsync-on-rewrite yes #正在导出rdb快照的过程中,要不要停止同步aof

三、解释

在dump rdb过程中,aof如果停止同步,会不会丢失数据

答:不会,所有的操作换存在内存的队列里,dump rdb完成后统一操作

aof重写是指什么?

答:aof重写是指把内存中的数据,逆化成命令,写入到.aof日志里,以解决aof日志过大的问题

如果rdb文件和aof文件都存在,优先用谁来恢复数据?

答:aof

rdb和aof是否可以同时使用?

答:可以的,而且推荐这么使用

恢复时,rdb和aof哪个快?

答:rdb快,因为其是数据的内存映射,直接载入到内存中,而aof是命令,需要逐条执行

相关文章

  1. redis aof日志持久化

    一、aof的原理 问题: 1、每个命令重写一次aof? 2、某个key修改100次,产生100行记录,aof文件会很大,怎么解决? aof重写(简化) 二、aof的配置 appendfsync

  2. redis的过期策略以及内存淘汰机制

    一、分析 这个问题其实相当重要,到底redis有没用到家,这个问题就可以看出来。比如你redis只能存5G数据,可是你写了10G,那会删5G的数据。怎么删的,这个问题思考过么?还有,你的数据已经设置

  3. python多线程

    一、介绍 多任务可以由多进程完成,也可以由一个进程内的多线程完成。 我们前面提到了进程是由若干线程组成的,一个进程至少有一个线程。 由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线

  4. python变量作用域

    在Python中并不是所有的语句块中都会产生作用域。只有当变量在Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念。 需要注意的是:在if-elif-else、f

  5. 高并发下的分布式锁

    public String deductStrck() throws InterruptedException{ String lockKey = "product_001"; //用

随机推荐

  1. redis aof日志持久化

    一、aof的原理 问题: 1、每个命令重写一次aof? 2、某个key修改100次,产生100行记录,aof文件会很大,怎么解决? aof重写(简化) 二、aof的配置 appendfsync

  2. redis的过期策略以及内存淘汰机制

    一、分析 这个问题其实相当重要,到底redis有没用到家,这个问题就可以看出来。比如你redis只能存5G数据,可是你写了10G,那会删5G的数据。怎么删的,这个问题思考过么?还有,你的数据已经设置

  3. python多线程

    一、介绍 多任务可以由多进程完成,也可以由一个进程内的多线程完成。 我们前面提到了进程是由若干线程组成的,一个进程至少有一个线程。 由于线程是操作系统直接支持的执行单元,因此,高级语言通常都内置多线

  4. python变量作用域

    在Python中并不是所有的语句块中都会产生作用域。只有当变量在Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念。 需要注意的是:在if-elif-else、f

  5. 高并发下的分布式锁

    public String deductStrck() throws InterruptedException{ String lockKey = "product_001"; //用