Redis持久化简介说明

乔欣 Java面经 发布时间:2022-11-06 22:06:24 阅读数:2087 1 Redis面试题(2023优化版)
下文笔者讲述Redis持久化的点点滴滴,如下所示

Redis持久化的简介

Redis持久化简介:
    Redis持久化指将Redis内存中的数据写入到磁盘中
    Redis持久化用于防止服务宕机后内存中数据丢失

Redis持久化机制及优缺点说明

Redis持久化有以下两种机制:
     1.RDB(默认)
     2.AOF机制

RDB持久化

RDB持久化:是Redis DataBase缩写,快照
RDB持久化简介:  
   RDB是Redis默认的持久化方式
   按照一定的时间间隔将内存的数据以快照的形式保存到硬盘中
   对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期。

RDB配置

# 表示 60 秒内如果至少有 1000 个 key 的值变化,则保存
save 60 1000

RDB工作流程

redis根据配置尝试去生成rdb快照文件
redis主进程fork一个子进程出来
子进程尝试将内存中的数据dump到临时的rdb快照文件中
完成rdb快照文件的生成之后,覆盖旧的快照文件

RDB快照模式的优点

RDB快照文件为一个文件,例:dump.rdb,方便持久化,容灾性好。

性能最大化,fork 子进程来完成写操作,让主进程继续处理命令,保证了 redis 的高性能
数据集大时,比AOF启动效率更高

RDB持久化的缺点

数据安全性低
  RDB 是间隔一段时间进行持久化
  当持久化时,redis发生故障,则会发生数据丢失

AOF持久化

AOF持久化简介

AOF持久化(Append Only File缩写)
   将Redis执行的每条写命令记录到单独的aof日志文件中
   当重启Redis服务时
    会从持久化的日志文件中恢复数据。
     
	 当两种方式同时开启时
     数据恢复时
     Redis会优先选择AOF恢复

AOF配置

# 表示是否开启AOF持久化(默认no,关闭)
appendonly yes
# AOF持久化配置文件的名称
appendfilename “appendonly.aof”  
# 缓存回写策略
appendfsync always (同步持久化,每次发生数据变更会被立即记录到磁盘,性能差但数据完整性比较好)
appendfsync everysec (异步操作,每秒记录,如果一秒钟内宕机,有数据丢失)
appendfsync no (将缓存回写的策略交给操作系统,linux 默认是30秒将缓冲区的数据回写硬盘的)

AOF的Rewrite(重写) :
定义:AOF采用文件追加的方式持久化数据,所以文件会越来越大,为了避免这种情况发生,增加了重写机制。重写机制主要是将文件中无效的命令去除。如同一个key的值,只保留最后一次写入,已删除或者已过期数据相关命令会被去除。

重写的触发方式:1.手动执行 bgrewriteaof 触发AOF重写;2.在redis.conf文件中配置重写的条件
# 当文件比上次重写后的文件大100%时进行重写
auto-aof-rewrite-percentage 100
# 当文件大于64M时进行重写
auto-aof-rewrite-min-size 64mb

AOF工作流程

所有的写入命令会追加到AOF缓冲中。

AOF缓冲区根据对应的策略向硬盘做同步操作。

随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的。

当Redis服务器重启时,可以加载AOF文件进行数据恢复

AOF持久化优点

数据安全
   可以配置每进行一次命令操作就记录到 aof 文件中一次。

通过 append 模式写文件
  即使中途服务器宕机
   可以通过 redis-check-aof 工具解决数据一致性问题。

AOF持久化的缺点

AOF 文件比 RDB 文件大
   且恢复速度慢
数据集大时
   比 rdb 启动效率低

redis日常开发中应选择何种持久化方式呢?

 1.严格意义上,我们可以同时使用两种持久化方式相结合
 
 2.如果我们能忍受数据缺失少许,则我们可使用RDB持久化

 3.如果只是一些缓存数据,可有可无,则无需使用持久化

 4.单独使用AOF这种模式,在市面上比较少见 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaMianJing/202211/16677446804821.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者