【愚公系列】2022年05月 .NET架构班 051-分布式中间件 Redis存储原理之持久化存储
【摘要】 前言Redis是基于内存的,一旦Redis服务器宕机,内存中的数据会全部丢失。如果从后端数据库中来恢复Redis内存会产生以下问题:会给数据库带来巨大的压力。从数据库拉取数据性能较低会导致应用程序响应变慢。Redis存储数据可能是临时性的。因此,Redis的数据持久化很重要,而且不能从后端数据库中恢复。 一、Redis存储原理之持久化存储Redis的持久化存储主要有如下三个方式:RDB方式...
前言
Redis是基于内存的,一旦Redis服务器宕机,内存中的数据会全部丢失。
如果从后端数据库中来恢复Redis内存会产生以下问题:
- 会给数据库带来巨大的压力。
- 从数据库拉取数据性能较低会导致应用程序响应变慢。
- Redis存储数据可能是临时性的。
因此,Redis的数据持久化很重要,而且不能从后端数据库中恢复。
一、Redis存储原理之持久化存储
Redis的持久化存储主要有如下三个方式:
- RDB方式
- AOF方式
- AOF+RDB混合
1.RDB方式
RDB(Redis DataBase)内存快照是Redis提供的持久化机制,它既能避免数据丢失,又能更快地恢复数据。
所谓内存快照,就是指内存中的数据在某一个时刻的状态记录,它类似于照片。在Redis中,这些照片是就后缀为RDB的文件。
使用方式:
只需要将rdb启动目录就可以了,redis启动的时候会自动检查dump.rdb恢复其中的数据。
1.1 优点
- 适合大规模的数据恢复
- 对数据的完整性要求不高
1.2 缺点
- 需要一定的时间间隔进程操作,如果redis意外宕机了,最后一次修改的数据就没有了
- fork进程的时候,会占用一定的内容空间
2.AOF方式
以日志的形式来记录每个写操作,将redis执行过的所有指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,就是redis重启的话,就根据日志文件的内容将写指令从前到后执行一次完成数据的恢复。aof方式保存的文件是appendonly.aof文件。
使用方式:
手动触发:执行bgrewriteaof命令直接触发AOF重写。
自动触发:在redis.config配置文件中有两个配置项
auto-aof-rewrite-min-size 64MB(当AOF文件小于64MB的时候不进行AOF重写)
auto-aof-rewrite-min-percenrage 100(当前AOF文件比上次AOF重写后的文件大100%的时候进行AOF重写)
2.1 优点
- 每一次修改都同步,文件的完整性会更好
- 每秒同步一次,可能会丢失一秒的数据
- 从不同步,效率最高的
2.1 缺点
- 相对于数据文件来说,aof远远大于rdb,修复的速度也比rdb慢
- aof运行效率也要比rdb慢
3.AOF+RDB混合
问题:使用RDB持久化会有数据丢失的风险,但是恢复速度快,而使用AOF持久化可以保证数据完整性,但恢复数据的时候会很慢。
使用方式:
#配置
aof-use-rdb-preamble yes
3.1 优点
AOF+RDB混合:先使用RDB进行快照存储,然后使用AOF持久化记录所有的写操作,当重写策略满足或手动触发重写的时候,将最新的数据存储为新的RDB记录。这样的话,重启服务的时候会从RDB何AOF两部分恢复数据,即保证了数据完整性,又提高了恢复的性能。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)