redis持久化

RDB快照

将数据当前的形式全部保存

启动

通过save指令,手动执行一次数据持久化操作。
在redis.conf中配置的dir指定目录下会生成一个rdb文件(默认名称为dump.rdb)

相关配置

dbfilename dump.rdb
设置本地数据库文件名,默认为dump.rdb。通常设置为dump-端口号.rdb

dir
设置存储.rdb文件的目录
通常设置在存储空间较大的目录中,名为data

rdbcompression yes
设置存储至本地数据库时是否压缩数据,默认yes,采用LZF压缩。
默认设置开启,如果设置no,可以节省cpu运行时间,但是结果会导致文件变大

rdbchecksum yes
设置是否进行RDB文件格式校验,该校验过程在写文件和读文件过程均进行
通常默认设置开启,如果设置为no,可以节约读写时间大概10%的消耗,但是存在一定数据损坏的风险

save second changes
说明:满足规定时间(second)内key的变化数量达到指定数量(changes)即进行自动保存数据
判断标准:
在这里插入图片描述

  • 指令对数据产生影响,查询不算
  • 产生真正影响
  • 不进行数据对比,区别于第二点,这里不进行数据对比的意思是:如果进行两次相同的set操作,算作对两个key进行了影响数据的操作,它并不会去验证第二次指令set的数据是否和原来的数据一致
  • 当满足上述三个条件,则影响数量就会+1,也就是说除了查询外,增删改都会产生影响

数据恢复的时机:在redis服务启动时恢复

save指令使用注意事项

redis是单线程的,如果save指令执行的时间过长,会阻塞当前的redisf服务器,直到当前RDB工作完成为止,可能造成长时间阻塞
bg-save
手动启动后台保存操作,但不是立即执行
bgsave命令执行后,redis会调用linux的fork函数生成子进程去重启一个redis服务,然后创建rdb文件
在这里插入图片描述

相关配置:在save配置的基础上新增

  • stop-writes-on-bgsave-error yes (默认开启)
  • 说明:后台存储过程中如果出现错误,是否停止保存操作(建议开启)

RDB的弊端

存储数据量较大,效率较低

  • 基于快照的思想,每次读写都是全部数据,当数据量较大时,效率非常低
    大数据下的IO性能低
  • 基于fork函数创建的子进程,内存产生额外消耗
  • 宕机会带来数据丢失的风险

AOF重写

将数据操作的过程记录下来

概念

AOF持久化:以独立日志的方式,记录每次写命令,重启时再重新执行AOF文件中的命令,以达到恢复数据的目的。同RDB相比,相当于从直接记录数据到记录数据产生的过程
AOF的主要作用是解决了数据持久化的实时性

AOF写数据的过程

在这里插入图片描述

AOF写数据的三种策略

  • always(每次):每次写入操作均同步到AOF中,数据零误差,性能低
  • everysec(每秒):每秒将缓冲区中的指令同步到AOF文件中,数据准确性下降,性能较高,在系统突然宕机的情况下也只会损失1秒的数据 (默认配置)
  • no(系统控制):由操作系统控制每次同步到AOF文件中的周期,整体过程不可控

AOF开启

  • 配置:appendonly yes | no
  • 作用:是否开启AOF,默认关闭
  • 配置:appendfsync always | everysec | no
  • 作用:AOF读写策略
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值