Redis的持久化

前言

笔者目前在学习redis数据库,以此文章记录一些概念。

Redis持久化

Redis是一个支持持久化的内存数据库,也就是说Redis经常需要将内存中的数据同步到硬盘中来保证持久化。那么,Redis提供了两种持久化方式:

  • (默认)Snapshotting — 快照
  • Append-Only File — AOF

Snapshotting (RDB)

Redis会在某一时间点或满足某些要求时把自己内存中存储的数据默认以dump.rdb命名的镜像文件(二进制文件)的形式保存在硬盘中。我们可以在redis.cof中指定dump.rdb的存储位置。
在这里插入图片描述
运行原理:

  • Redis通过fork产生子进程
  • 父进程继续处理客户端请求
  • 子进程写完后,用临时文件替换原来的快照文件,然后子进程退出。

ps:如果业务要求数据完整性或者是一致性不是那么高的话,可以考虑使用RDB

触发时机

指定时间间隔
save、bgsave指令
停止redis服务
flushall指令

缺点

在A时间节点备份了镜像文件之后,在B时间节点之前系统宕机,则A与B时间节点之间的数据无法恢复。

AOF

redis以AOF(日志重写)方式从数据库中读取所有的写操作记录在日志中,通过读取日志的方式来恢复数据
注意:不是基于上一次AOF文件进行重写,而是基于当前redis数据库的数据进行重写

配置:
在这里插入图片描述
把appendonly 后面跟yes即打开aof机制
在这里插入图片描述
appendfilename后面的双引号里就是日志名字

在这里插入图片描述
appendfsync 后面跟的三个条件分别是:

  • always:每次数据变动时 (执行大量写操作时性能差,但是安全性高,毕竟每一次变动记录一次)
  • everysec:每一秒同步记录一次(系统默认)
  • no :不tongue

RDB与AOF切换过程中的一个坑

由于redis数据库默认不开启AOF,开启的是RDB,那么当数据库有数据时,在配置文件里把RDB关掉,去开启AOF后,数据全部丢失。
原因:
RDB机制下,数据以二进制的镜像文件里的数据为主,切换到AOF之后,数据以日志文件里的记录为主。所以造成了数据丢失的情况。

解决方案:
使用热切换:
redis中使用命令:
config set appendonly yes
config set save “”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值