Redis持久化简介说明
下文笔者讲述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这种模式,在市面上比较少见
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。