Redis持久化

一、持久化的作用

redis所有的数据都存在内存中,对数据的更新将异步地保存到磁盘上。
1.什么是持久化?
数据从内存保存到磁盘的过程叫做持久化。
2.持久化的方式

  • 快照 MySQL Dump、Redis RDB
  • 写日志 MySQL Binlog、Redis AOF

二、RDB

是Redis内存到硬盘的快照,用于持久化


RDB

RDB触发机制
1.save命令
client执行save命令,redis就会生成一个RDB文件默认叫dump.rdb(以旧换新的策略)。是一个同步命令,会阻塞客户端命令
2.bgsave命令
client执行bgsave命令,会交给后台子进程执行(fork),不会阻塞Redis但是fork新进程

save与bgsave的比较

3.自动生成RDB

4.其他方式

  • 全量复制
  • debug reload
  • shutdown

RDB存在的问题
1.O(n):耗时
2.fork():消耗内存,copy-on-write策略(写的时候先把文件拷贝一份,往拷贝的文件里写,然后再引用这个副本)
3.DiskI/O:IO消耗
4.当出现宕机的情况导致文件没有写完

三、AOF

运行原理

AOF运行原理-创建

当发生宕机之后,通过AOF文件进行完整的恢复

AOF的三种策略
Redis写文件首先是将内容写到缓冲区中,然后根据不同的策略刷新至磁盘中。
1.always:每一条命令刷新一次
2.everysc:每一秒刷新一次
3.no:操作系统决定

四、RDB和AOF的抉择

image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 从这篇文章开始,将依次介绍Redis高可用相关的知识——持久化、复制(及读写分离)、哨兵、以及集群。 本文将先说明...
    不变甄心阅读 739评论 0 4
  • 一、Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。 我们知道,在w...
    Java架构_师阅读 480评论 0 2
  • 前言 在上一篇文章中,介绍了Redis内存模型,从这篇文章开始,将依次介绍Redis高可用相关的知识——持久化、复...
    Java架构阅读 2,505评论 3 21
  • 一、Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。 我们知道,在w...
    空语阅读 1,683评论 0 2
  • 戳戳戳这里,谢谢大家 大家好,我是北京服装学院时尚传媒的大四学生,我的毕业设计希望做一本针对青年人的有思想杂志日记...
    休一一一一阅读 206评论 0 1

友情链接更多精彩内容