美文网首页
Redis持久化方式

Redis持久化方式

作者: 宸风如苏 | 来源:发表于2018-07-22 22:57 被阅读0次

原理

一:RDB快照持久化

1、有两个Redis命令可以用于生成RDB文件,一个是SAVE,另一个是BGSAVE

(1) SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止。在服务器进程阻塞期间,服务器不能处理任何命令请求。

(2) BGSAVE命令会派生出一个子进程,然后由子进程负责创建RDB文件,服务器进程(父进程)不受影响。

2、在Redis数据进行恢复的时候,由于AOF文件的更新频率通常比RDB文件的更新频率高,所以遵循以下规律:

(1) 如果服务器开启了AOF持久化功能,那么服务器会优先使用AOF文件来还原数据库状态

(2) 只有在AOF持久化功能处于关闭状态时,服务器才会使用RDB文件来还原数据库状态

3、BGSAVE 的自动间隔性保存功能

Redis配置文件中参数如下:

save 900 1     #900 秒内如果超过 1 个 key 被修改,则发起快照保存
save 300 10    #300秒超过10个key被修改,发起快照
save 60 10000  #60秒超过10000个key被修改,发起快照

二:AOF持久化

1、AOF持久化是通过保存用户执行的每个命令来实现的,其写入和同步的方式由 appendfsync 参数控制,有以下三个选项:
(1) always:服务器在每个事件循环都需要将aof_buf 缓冲区中的所有内容写入到AOF文件,并且同步AOF文件。效率最低,安全最高。

(2) everysec:服务器在每个事件循环都需要将aof_buf 缓冲区中的所有内容写入到AOF文件,并且每隔一秒就要在子线程中对AOF文件进行一次同步。所以就算Redis实例出现故障停机,也只丢失一秒钟的数据。

(3) no:服务器在每个事件循环都需要将aof_buf 缓冲区中的所有内容写入到AOF文件,至于何时对AOF文件进行同步,则有操作系统控制,Redis实例无须执行同步操作。效率最高,安全最低。

2、随着Redis服务的运行,AOF会记录越来越多的命令,AOF文件体积就会越来越大。Redis提供了AOF文件重写功能来解决该问题。

通过使用 BGREWEITEAOF 命令,Redis将生成新的AOF文件替换旧的AOF文件。但是其过程并不是在老的AOF文件基础上进行的,而是 通过读取服务器当前的数据库状态 来实现的。

AOF重写采用的是子进程的方式在后台运行,但是会出现这样一种情况:子进程在重写期间,新的命令对现有数据库进行了修改,这样导致了重写后的AOF文件与当前数据库状态不一致。解决该问题的方式是 在AOF重写期间,新的命令写入AOF缓存区的同时,也发送到AOF重写缓存区。

三:持久化方式的开启与关闭

1:RDB快照持久化默认是开启的,那如何关闭呢?

修改redis配置文件,注释以下配置
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000

2 :如何开启AOF持久化呢?

以下配置与之相关,视情况开启
appendonly yes     是否开启AOF备份数据,yes代表是,no代表否
appendfilename appendonly.aof   备份文件名设置
以下配置三选一开启
appendfsync always    有操作就写入
appendfsync everysec  每隔一秒写入
appendfsync no        有空闲就写入

相关文章

  • Redis持久化是如何做的?RDB和AOF对比分析

    redis持久化2种方式 Redis持久化有 RDB 和 AOF两种方式 一、redis持久化----两种方式1...

  • 2020-02-21 记录redis(8)

    redis持久化,两种持久化方式: RDB方式 AOF方式 持久化的使用方式: RDB 优势: 1、redis的数...

  • Redis持久化(三)

    Redis持久化方式 Redis有两种持久化的方式:快照(RDB文件)和追加式文件(AOF文件): RDB持久化方...

  • Redis学习笔记

    聊聊redis持久化 – 两种方式 redis提供了两种持久化的方式,分别是RDB(Redis DataBase)...

  • 聊一聊redis持久化

    聊聊redis持久化 – 两种方式 redis提供了两种持久化的方式,分别是RDB(Redis DataBase)...

  • Redis之持久化

    参考 深入学习Redis(2):持久化 转载自icyfire-Redis持久化 Redis有两种持久化的方式:快照...

  • 【5分钟背八股】redis持久化RDB和AOF?

    Redis 持久化 Redis 提供了不同级别的持久化方式: RDB持久化方式能够在指定的时间间隔能对你的数据进行...

  • Redis的持久化方式:RDB和AOF

    一,redis的持久化方式:RDB和AOF RDB,即Redis Database RDB持久化方式:在指定的时间...

  • redis mongodb持久化的方式

    redis持久化方式(两种) RDB持久化 redis提供了RDB持久化的功能,这个功能可以将redis在内存中的...

  • Redis持久化

    Redis持久化方式有两种:RDB和AOF。 1 RDB持久化 RDB(Redis Database)持久化是把当...

网友评论

      本文标题:Redis持久化方式

      本文链接:https://www.haomeiwen.com/subject/qngrmftx.html