redis基础之---数据持久化(三)

7、redis数据持久化

Redis虽然是一个内存级别的缓存程序,也就是redis是使用内存进行数据的缓存的,但是其可以将内存的数据按照一定的策略保存到硬盘上,从而实现数据持久保存的目的,目前redis支持两种不同方式的数据持久化保存机制,分别是RDB和AOF

7.1、RDB 模式

**RDB(Redis DataBase):**基于时间的快照,其默认只保留当前最新的一次快照,特点是执行速度比较快,缺点是可能会丢失从上次快照到当前时间点之间未做快照的数据

RDB实现的具体过程Redis从主进程先fork出一个子进程(后台通过bgsave备份,不影响主进程读写内存数据),使用写时复制机制,子进程将内存的数据保存为一个临时文件,比如dump.rdb.temp,当数据保存完成之后再将上一次保存的RDB文件替换掉,然后关闭子进程,这样可以保存每一次做RDB快照的时候保存的数据都是完整的,因为直接誓换RDB文件的时候可能会出现突然断电等问题而导致RDB文件还没有保存完整就突然关机停止保存而导致数据丢失的情况,可以手动将每次生成的RDB文件进程备份,这样可以最大化保存历史数据。

在这里插入图片描述

RDB文件的缺点

优点

  1. RDB快照保存了某个时间点的数据,可以通过脚本执行bgsave(非阻塞)或者save(阻塞)命令自定义时间点备份,可以保留多个备份,当出现问题可以恢复到不同时间点的版本
  2. 可以最大化IO的性能,因为父进程在保存RDB文件的时候唯一要做的是fork出一个子进程,然后的操作都会有这个子进程操作,父进程无需任何的IO操作
  3. RDB在大量效据比如几个G的数据,恢复的速度比AOF的快

缺点

  1. 不能时时的保存数据,会丢失自上一次执行RDB备份到当前的内存数据
  2. 数据量非常大的时候,从父进程fork的时候需要一点时间,可能是毫秒或者秒或者分钟,取决于磁盘IO性能

7.2、AOF模式

**AOF:**按照操作顺序依次将操作添加到指定的日志文件当中,特点是数据安全性相对较高,缺点是即使有些操作是重复的也会全部记录

AOF和RDB一样使用了写时复制机制,AOF默认为每秒钟fsync一次,即将执行的命令保存到AOF文件当中,这样即使redis服务器发生故障的话顶多也就丢失1秒钟之内的数据,也可以设置不同的fsync策略,或者设置每次执行命令的时候执行fsync,fsync会在后台执行线程,所以主线程可以继续处理用户的正常请求而不受到写入AOF文件的IO影响。

AOF模式优缺点

AOF的文件大小要大于RDB格式的文件
根据所使用的fsync策略(fsync是同步内存中redis所有已经修改的文件到存储设备),默认是appendfsync everysec即每秒执行一次fsync。

7.3、手动实时同步RDB数据–bgsave

其实就是将内存中的数据实时备份成rdb数据,bgsave是后台执行的,不会影响redis正常读写操作,命令如下:

# 手动执行RDB数据备份
127.0.0.1:6379> bgsave
Background saving started

# 查看备份好的RDB数据,我们发现时间已经变成最新的时间了
[root@redis-server data]# ll
总用量 8
-rw-r--r--. 1 root root 3960 4月  12 11:22 appendonly.aof
-rw-r--r--. 1 root root 1791 4月  12 16:18 dump.rdb

**注意:**如果用save备份数据的话,在备份数据期间redis是不能正常读写数据的,因为被阻塞了,save是前台备份数据的命令

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值