乐趣区

关于java:一文吃透redis持久化妈妈再也不担心我面试过不了

长久化介绍

redis 提供了两种形式形式进行数据的长久化(将数据存储到硬盘中);第一种称为快照(snapshotting)RDB,它将某一时刻的所有数据都写入硬盘,所以快照是一次全量备份,并且存储的数据模式是二进制序列化模式;另一种形式是只追加文件(append-only file)AOF, 它会在执行命令时将命令复制一份到硬盘中,AOF 在长期运行中会变的十分宏大,数据库重启加载 AOF 日志将会很慢;

redis 将数据长久化的次要起因就是重用数据,或者避免系统故障,备份数据;

两种形式的长久化是能够同时存在的,然而当 Redis 重启时,AOF 文件会被优先用于重建数据

工作原理

快照工作原理

redis 的快照必须要求文件 IO 操作,单线程的 redis 进行多余的 IO 操作会影响服务器的性能,所以 redis 采纳 COW(copy on write)机制实现快照的长久化;

  • 首先 redis 进行会 fork 一个子过程,此时就存在父子过程;
  • 父过程负责进行批改操作,内存继续减少;而子过程数据不做任何变动;
  • 子过程将霎时数据写入磁盘的 rdb 文件

AOF 工作原理

AOF 日志寄存了 redis 指令程序序列;所以只有从新执行 AOF 文件蕴含所有的命令就能够实现 AOF 文件记录的所有数据;

罕用配置

RDB 配置

默认文件

dbfilename dump.rdb
dir ./

redis 会将数据默认 dump 至 dump.rdb 文件中;咱们能够通过配置批改 dump 的频率;

在 900 秒 (15 分钟) 之后,如果至多有 1 个 key 发生变化,则 dump 内存快照。

save 900 1

在 300 秒 (5 分钟) 之后,如果至多有 10 个 key 发生变化,则 dump 内存快照。

save 300 10

在 60 秒 (1 分钟) 之后,如果至多有 10000 个 key 发生变化,则 dump 内存快照

save 60 10000

如果想要禁用快照性能,正文掉如上配置,开启 save "" 配置

save “”

save 900 1

save 300 10

save 60 10000

手动备份

save 命令是阻塞命令 , 当服务器接管到 save 命令之后就会开始拍摄快照,在此期间不会解决其余申请;

bgsave 命令也是立刻拍摄快照, 非阻塞命令,而是 fork 一个子线程进行备份快照;

毛病

  • 每隔一段时间进行一次长久化,如果 redis 解体,可能会导致局部数据失落问题;
  • RDB 应用 fork() 子过程进行数据的长久化,如果数据量大,可能破费的工夫较长,redis 会造成显著的卡顿几秒景象;
  • 很好的备份成果,容易进行数据恢复;

长处

  • 相比 AOF,在数据量比拟大的状况下,RDB 的启动速度更快;
  • RDB 应用 fork() 子过程进行数据的长久化,自身不会有多余的 IO 操作;

AOF 配置

启用 AOF

appendonly yes

默认文件

appendfilename “appendonly.aof”
dir ./

fsync

如果 redis 产生宕机事件,有可能没来的及数据写入磁盘;此时 redis AOF 的 fsync 策略可能保障 redis 放弃高性能,和尽可能的缩小数据失落;默认就是应用 1s 执行一次同步;

每次有数据批改产生时都会写入 AOF 文件。

appendfsync always

每秒钟同步一次,该策略为 AOF 的缺省策略。

appendfsync everysec

从不同步。高效然而数据不会被长久化。

appendfsync no

AOF 重写

AOF 日志文件会随着 redis 运行越来越宏大,Redis 提供了 bgrewriteaof 指令用于对 AOF 日志进行瘦身;也能够应用配置文件进行主动瘦身;

以后 AOF 文件大小是上次日志重写失去 AOF 文件大小的二倍时,主动启动新的日志重写过程。

auto-aof-rewrite-percentage 100

以后 AOF 文件启动新的日志重写过程的最小值,防止刚刚启动 Reids 时因为文件尺寸较小导致频繁的重写。

auto-aof-rewrite-min-size 64mb

要禁用主动的日志重写性能,咱们能够把百分比设置为 0

auto-aof-rewrite-percentage 0

长处

  • 应用 fsync 每秒一次同步,数据完整性较高;
  • redis 如果产生宕机,反对应用 redis-check-aof 工具修复损坏的 AOF 文件

毛病

  • AOF 文件的大小个别会比 RDB 文件大
  • AOF 在运行效率上往往会慢于 RDB

关注公众号:常识追寻者,获取一线大厂面经

退出移动版