Redis持久化 RDB和AOF

目录

Redis持久化

1.持久化过程

RDB机制

配置:

AOF机制

1、持久化原理

2、文件重写原理

3、AOF也有三种触发机制

开启aof


Redis持久化

1.持久化过程

既然redis的数据可以保存在磁盘上,那么这个流程是什么我摘录网上给的五个过程分享给大家
(1) 客户端向服务端发送写操作(这时候数据在客户端的内存中)
(2)数据库服务端接受到写的请求数据(这时候数据在服务端的内存中了)
(3)服务端这时候调用write这个系统调用,将数据往磁盘上面写(这时候数据在系统内存的缓冲区中)
(4)操作系统将缓冲区中的数据转移到磁盘控制器上(这时候数据在磁盘缓存中)
(5)磁盘控制器将数据写在磁盘的物理介质中(这时候数据真正落在磁盘上)
redis如何来实现上面5个保存磁盘的步骤。
提供了两种策略机制,也就是
RDB AOF

RDB机制

RDB其实就是把数据以快照的形式保存在磁盘上。什么是快照呢,你可以理解成把当前时刻的数据拍成一张照片保存下来。
RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式是就是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。
2种方式:save 和 bgsave  
save:同步 执行,阻塞客户端redis命令 知道保存完成

配置:

vim /usr/local/redis-stable/redis.conf
save 秒钟 写操作次数
在这个位置配置
save 30 5,表示 30 秒内写save入 5 条数据就产生一次快照,也就是生成 rdb 文件。
   重启服务
根目录产生文件dump.rdb
 bgsave:异步执行,需要fork字进程,消耗内存。但是不阻塞客户端redis命令

AOF机制

全量备份总是耗时的,有时候我们提供一种更加高效的方式AOF,工作机制很简单,redis会将每一个收到的写命令都通过write函数追加到文件中。通俗的理解就是日志记录。

1、持久化原理

他的原理看下面这张图:

每当有一个写命令过来时,就直接保存在我们的AOF文件中。

2、文件重写原理

AOF的方式也同时带来了另一个问题。持久化文件会变的越来越大。为了压缩aof的持久化文件。redis提供了bgrewriteaof命令。将内存中的数据以命令的方式保存到临时文件中,同时会fork出一条新进程来将文件重写。

重写aof文件的操作,并没有读取旧的aof文件,而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似。

3、AOF也有三种触发机制

(1)每修改同步always:同步持久化 每次发生数据变更会被立即记录到磁盘 性能较差但数据完整性比较好
(2)每秒同步everysec:异步操作,每秒记录 如果一秒内宕机,有数据丢失
(3)不同no:从不同步

开启aof

  • 通过修改redis.conf配置中 appendonly yes 来开启AOF持久化
  • 通过appendfilename指定日志文件名字(默认为appendonly.aof)
  • 通过appendfsync指定日志记录频率
配置好后,停止 Redis 服务,然后再重新开启 Redis 服务后,就可以在 RDB 生成的同目录下( 默认都是启动路径下 )会生成一个 appendonly.aof 文件。
appendonly.aof 这个文件和你启动路径一样的这里(这个文件位置我找了好久才知道的默认都是在Redis启动路径)
比如我是在这里开启redis的
redis-server /etc/redis.conf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值