Redis - 持久化机制

Redis持久化

数据的存放方式:

  • 如Redis存放在内存:内存读写高效但断电会丢失数据
  • 如Mysql存放在磁盘:读写速度慢,但不会丢失数据

Redis是在内存中运行的,为了防止服务器宕机造成数据丢失,需要将内存中的数据存入磁盘(持久化)

Redis提供了两种持久化策略:

  • RDB(默认):一定时间存储数据
  • AOF:默认每秒存储历史命令

Redis是支持持久化的内存数据库,需要经常将内存的数据同步到磁盘

RDB

RDB : Redis DataBase,一定间隔时间持久化一次,功能核心是rdbSave(生成RDB文件)和rdbLoad(将RDB文件加载进内存)两个函数

RDB是redis的默认持久化策略,也称为快照,这种策略将内存的数据以快照的方式写入到二进制文件中,默认文件名为dump.rdb

  • 优点:快照存取数据快,适用与灾难备份
  • 缺点:消耗内存大,小内存机器不适合

快照条件:

  1. 服务器正常关闭shutdown
  2. key满足一定条件会进行快照,在redis.conf配置文件中设置相关属性
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个更改就同步到磁盘,300秒(5分钟)内有10个更改以及60秒内有10000个更改。

在这里插入图片描述

在哪里操作的redis就在哪生成的dump.rdb

在这里插入图片描述

AOF

RDB是一定间隔时间持久化一次,如果服务器宕机,会丢失最后一次快照后的所有修改

如果需求不能丢失任何修改,采用AOF策略

AOF:Append-only file,将每一个收到的命令都通过write函数追加到文件(默认appendonly.aof),当redis重启会通过该文件保存的命令在内存中重建数据库

flushAppendOnlyFile函数:每次只需服务器任务或者函数时,该函数都会调用,该函数执行以下两个过程

  • write:将aof_buf中缓存写入到aof文件
  • save:调用fsync或fdatasync函数,将aof文件保存到磁盘

AOF有三种方式,redis.conf里可以配置:

  • appendonly yes,启动aof持久化策略
  • appendfsync always,表示每次更新操作后立即调用fsync()将数据写到磁盘(慢,安全)
  • appendfsync everysec,表示每秒同步一次(折中,默认值)
  • appendfsync no:表示等操作系统进行数据缓存同步到磁盘(快,无法保证持久化)

在这里插入图片描述

AOF策略:

  • 优点:安全,数据不会丢失
  • 缺点:持久化文件会越来越大(多次重复命令,命令多余)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值