Redis之持久化

RDB

RDB定义

以二进制的形式,将所有数据库的真实数据保存在磁盘中,redis默认开启的数据持久化方案。redis database

rdb备份文件默认路径/var/lib/redis/dump.rdb,也可以在配置文件中更改
253 dbfilename dump.rdb
263 dir /var/lib/redis

触发RDB

客户端命令

一. save

  1. 阻塞redis服务,save执行结束后,redis服务才可以重新处理客户端发送的命令
  2. 新的rbd文件,会覆盖旧的
    二. bgsave
    background save
  3. redis服务开启fork子进程,进行数据持久化
  4. 服务端继续提供服务,不阻塞
  5. 子进程创建完rbd文件,在通知redis服务

配置文件

sudo vim /etc/redis/redis.conf

#218, save 900 1
自上次触发RDB 900s后,redis所有数据库若有至少一次更改,则触发RDB

#219, save 300 10
自上次触发RDB 300s后,redis所有数据库若有至少10次更改,则触发RDB

#220, save 60 1000 
自上次触发RDB 60s后,redis所有数据库若有至少1000次更改,则触发RDB

三个条件中,有一个满足则触发bgsave

正常关闭redis服务

sudo /etc/init.d/redis-server stop
#正常关闭redis服务,触发RDB

sudo /etc/init.d/redis-server start
#启动服务,从dump.rbd加载数据到内存

说明

  1. 触发RDB不能过于频繁,否则不仅占用资源,而且影响服务性能
  2. RDB持久化有中间的空闲期,可能会丢失数据

AOF

AOF定义

不存储数据,存储客户端命令,默认不开启,需修改配置文件才能开启,这样的一种redis数据持久化方案

sudo -s 
vim /etc/redis/redis.conf +672

appendonly yes
appendfilename "appendonly.aof"

#重启服务
sudo /etc/init.d/redis-server restart

AOF执行原理

每当有修改数据库的命令执行时,redis将该命令存入AOF磁盘文件,恢复数据时,redis服务重新执行AOF文件中的命令,达到恢复数据的目的。

写命令在存入AOF磁盘文件之前,先放入内存缓冲区,当内存缓冲区满时,在将缓冲区内的所有命令一次写入磁盘。
配置文件,决定何时将缓冲区的命令写入AOF磁盘文件

#701, appendfsync always 每次有写命令到达内存缓冲区,就写入AOF磁盘文件,不会丢失数据
#702, appendfsync everysec 每秒将缓冲区的命令,写入AOF磁盘文件,最多丢失1s的数据
#703, appendfsync no  redis服务不主动将内存缓冲区的命令写入AOF磁盘文件,由OS自己决定,数据丢失量不确定

越早将内存缓冲区的写命令写入AOF磁盘文件,意外丢失的数据越少

AOF重写

为避免AOF磁盘文件中的命令有过多的冗余 ,AOF重写使用尽可能少的命令来记录数据库中的数据,不会阻塞服务器
如:

>sadd s1 tom
>sadd s1 jack
>sadd s1 lili
#重写后的命令
>sadd s1 tom jack lili
#减少了命令的冗余

AOF重写触发

  1. 客户端命令
    bgrewriteaof
  2. 配置文件
sudo vim /etc/redis/redis.conf
#搜索
/auto-aof

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

#每次超过64mb 100%时,触发AOF重写

RDB与AOF

  1. RDB,默认开启,以二进制形式一次将所有数据库的真实数据保存到rbd磁盘文件,属于全量备份
    AOF,默认不开启,需修改配置文件开启,不保存真实数据,一次保存一个/多个修改数据库的命令到aof磁盘文件,属于增量备份
  2. RDB,备份时间间隔较长
    AOF,备份时间认为1s
  3. RDB,数据还原快,dump.rdb文件中为二进制真实数据
    AOF,数据还原慢,要执行完appendonly.aof中所有的命令
  4. RDB,save方式会阻塞服务器,bgsave不阻塞
    AOF,均不阻塞服务器

dump.rdb,appendonly.aof两个文件同时存在时,redis服务恢复数据优先走aof文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值