前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis持久化: RDB&AOF

Redis持久化: RDB&AOF

作者头像
一点博客
发布2022-12-10 16:14:04
3420
发布2022-12-10 16:14:04
举报
文章被收录于专栏:一点博客一点博客

持久化流程:

  1. 客户端向数据库发送写命令:数据在客户端的内存;
  2. 数据库接收到客户端的请求:数据在服务器的内存;
  3. 数据库调用系统API将数据写入磁盘:数据在内核缓冲区;
  4. 操作系统将写缓冲区传输到磁盘控制器:数据在磁盘缓存中;
  5. 操作系统的磁盘控制器将数据写入实际的物理媒介:数据在磁盘中;

持久化方式

RDB: 指定的时间间隔能对你的数据进行快照存储.

AOF: 记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据,AOF命令以redis协议追加保存每次写的操作到文件末尾.Redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大.

RDB

  • 配置方式:

(1)手动触发快照:

save (阻塞客户端发送的请求)

bgsave (异步创建快照)

(2)自动触发:

save 900 2 (服务器在900秒之内,对数据库至少进行了2次修改的话,就会执行 bgsave命令)

save 300 20 (服务器在300秒之内,对数据库至少进行了20次修改的话,就会执行 bgsave命令)

  • 原理:fork()是unix系统的一个api;

fork一个子进程, 子进程先共享父进程的数据;

当主进程数据有写入操作时, 触发copy on write , 此时给子进程分配物理空间,并将资源复制给子进程;

AOF

AOF(append only file): 记录redis操作的指令。会过滤掉无效指令;

AOF重写: 开辟一个子进程,对内存进行遍历,序列化到一个新的AOF日志文件

  • 配置:
代码语言:javascript
复制
appendonly yes
#将 aof_buf缓冲区的所有内容写入并同步到AOF文件
appendfsync always 
#将 aof_buf缓冲区的所有内容写入并同步到AOF文件,每秒执行一次
appendfsync everysec 
#将 aof_buf缓冲区的所有内容写入到AOF文件,但何时同步由操作系统决定
appendfsync no

RDB与AOF对比:

RDB 优点:

  1. 是一个非常紧凑的二进制文件,恢复更快

RDB缺点:

  1. 会丢失指定时间间隔的数据

AOF优点:

  1. 实时持久化,数据安全性高

AOF缺点 :

  1. 由于是日志追加,体积要比RDB大。
  2. 数据量大时,恢复慢;

混合持久化

RDB会丢失部分数据,AOF日志重放要慢很多;

Redis4.0 为了解决这个问题, 采用了混合持久化的方式;

优点:混合持久化结合了 RDB 和 AOF 持久化的优点,开头为 RDB 的格式,使得 Redis 可以更快的启动,同时结合 AOF 的优点,又降低了大量数据丢失的风险。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一点博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 持久化流程:
  • 持久化方式
  • RDB
  • AOF
  • RDB与AOF对比:
  • 混合持久化
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档