Redis持久化方式有哪些?
一旦redis服务器退出,数据就会丢失。为了解决这个问题,Redis提供了三种解决方案,将内存中的数据保存到磁盘中,避免数据丢失:
1.RDB(快照)持久化:保存某个时间点的全量数据快照
2.AOF(Append-Only-File)持久化:保存写状态。记录下除了查询以外的所有变更数据库状态的指令;以append的形式追加保存到AOF文件中(增量)。
3.RDB-AOF混合持久化方式:BGSAVE做镜像全量持久化,AOF做增量持久化。Redis实例重启时,使用BGSAVE持久化文件,重新构建数据,再使用AOF重放近期的操作指令,来完整恢复重启之前的状态。
RDB RDB(快照)持久化:保存某个时间点的全量数据快照
RDB配置:
redis安装目录:Redis.conf
持久化策略
文章图片
900秒内如果有一条写入指令,则900s时产生一次快照
300秒内如果有十条写入指令,则300s时产生一次快照
60秒内有一万条写入指令,则进行一次备份
文章图片
当备份进程出错的时候,主进程停止接收新的写入操作,这样做是为了保护持久化的数据一致性
文章图片
在备份的时候,需要对RDB文件进行压缩后才保存,建议设置为no
持久化文件保存的位置:
文章图片
保存RDB文件的指令:
SAVE:阻塞Redis的服务器进程,直到RDB文件被创建完毕
BGSAVE:Fork出一个子进程来创建RDB文件,不阻塞服务器进程
RDB产生快照文件:
方式1:save
客户端会卡顿一段时间,什么事情都做不了
文章图片
方式2:bgsave
后台保存,客户端不会卡顿,当lastsave值更新时,说明保存成功了
文章图片
自动化触发RDB持久化的方式:
文章图片
文章图片
文章图片
文章图片
AOF 保存写状态。记录下除了查询以外的所有变更数据库状态的指令;以append的形式追加保存到AOF文件中(增量)
AOF配置
redis安装目录:Redis.conf
AOF默认是关闭的
打开AOF:
文章图片
AOF文件默认的名字:
文章图片
配置AOF文件的写入方式:
文章图片
always:一旦缓存区的数据发生变化,就将缓存区内容写入AOF中
everysec:将缓存区内容,每隔一秒写入AOF中,推荐
no:将写入AOF的方式交由操作系统来决定,一般操作系统会等缓存区被填满,才会同步数据到磁盘当中
也可以使用命令打开AOF:
Src目录下生成了appendonly.aof文件
文章图片
文章图片
Redis数据的恢复
RDB和AOF文件共存情况下的恢复流程
文章图片
文章图片
【JAVA面试准备之Redis Redis持久化方式】
推荐阅读
- Redis|redis原理之布隆过滤器(Bloom Filter)
- redis安装与基本使用
- java|图解四种 IO 模型
- Redis|Redis性能解析--Redis为什么那么快()
- java|你跳一次涨多少(今天见识到跳槽天花板!!)
- java|送你一份大厂都这么解决Redis缓存问题,面试官必问!
- (免费领取红包封面)【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知
- redis优化(bigkey、hotkey)
- redis高可用(主从、哨兵、集群)
- 【Redis 系列】redis 学习四,set 集合,hash 哈希,zset 有序集合初步认知