IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Redis的持久化 -> 正文阅读

[大数据]Redis的持久化

Redis持久化 Persistence


Redis的持久化主要分为rdb和aof两种方式

rdb (Redis DataBase)

是什么

  1. 在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里
  2. Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到 一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。
  • rdb 保存的是dump.rdb文件
  • 相关配置在配置文件的位置 - 在redis.conf搜寻### SNAPSHOTTING ###

Fork

Fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等) 数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程

如何触发RDB快照

  1. 在配置文件中设置触发快照的值和相应更新的时间(被动)
  2. (主动)直接save或BGSAVE
    • save:只管保存,其他不管,全部阻塞掉
    • BGSAVE:Rediscover会在后台异步进行快照操作,快照的同时还可以响应客户端请求。可以通过lastsave命令获取最后一次成功执行快照的时间

note:备份最好备份在其他机器上,才能防止本机器挂掉的数据恢复

设置rdf配置文件

配置文件,在redis.conf /SNAPSHOTTING即可

image.png
我是在docker中的redis进行演示的

image.png

image.png
经过一系列key的更新,dump.rdb又会重写出现

image.png
(config set requirepass “yourpassword” 是可以修改密码的)

save Demo

save 是立即备份,可以通过查看dump.rdb文件的时间发现确实是改变了

image.png

image.png

image.png

如何恢复

将备份文件dump.rdb移动到redis安装目录并重启服务即可
CONFIG GET dir获取目录

优点和缺点

优势

适合大规模的数据恢复
对数据完整性和一致性要求不高

劣势

在一定间隔时间做一次备份,如果redis意外down掉的话,就会丢掉最后一次快照后的所有修改
Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑

如何停止rdb

动态所有停止RDB保存规则的方法:

redis-cli config set save ""

aof (Append Only File)

image.png

aof和rdb可以同时使用,redis恢复时优先采用aof

新技术的出现类似于旧技术的子类,借鉴,改进更加强大,但父类并非无用

是什么

以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录), 只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis 重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

AOF配置

相关配置在配置文件的位置 - 在redis.conf搜寻APPEND ONLY MODE

aof保存的是appendonly.aof文件(在配置文件可修改文件名)

image.png

append的三种策略

image.png

  1. always同步持久化,每次变化数据变更会被立即记录到磁盘,性能较差但数据完整性比较好
  2. Everysec 出厂默认推荐,异步操作,每秒记录,如果一秒内盘机,有数据丢失
  3. no 不使用

由于断电等redis最后有语句错误可以使用:
Redis-check-aof --fix进行修复

rewrite

是什么:

AOF采用文件追加方式,文件会越来越大。为避免出现此种情况,新增了重写机制, 当AOF文件的大小超过所设定的阈值时,Redis就会启动AOF文件的内容压缩,只保留可以恢复数据的最小指令集。可以使用命令bgrewriteaof

重写原理

AOF文件持续增长而过大时,会fork出一条新进程来将文件重写(也是先写临时文件最后再rename), 遍历新进程的内存中数据,每条记录有一条的Set语句。重写aof文件的操作,并没有读取旧的aof文件, 而是将整个内存中的数据库内容用命令的方式重写了一个新的aof文件,这点和快照有点类似

触发机制

Redis会记录上次重写时的AOF大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发

image.png
之后的要设置多达三四G才行

优势与劣势

优势

每修改同步:appendfsync always 同步持久化 每次发生数据变更会被立即记录到磁盘 性能较差但数据完整性比较好
每秒同步:appendfsync everysec 异步操作,每秒记录 如果一秒内宕机,有数据丢失
不同步:appendfsync no 从不同步

劣势

相同数据集的数据而言aof文件要远大于rdb文件,恢复速度慢于rdb
Aof运行效率可能要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同

小结

image.png

  1. AOF文件时一个只进行追加的日志文件
  2. Redis可以在AOF文件体积变得过大时,自动地在后台对AOF进行重写
  3. AOF文件有序地保存了对数据库执行的所有写入操作,这些写入操作以Redis协议的格式保存,因此AOF文件的内容非常容易被人读懂,对文件进行分析也很轻松
  4. 对于相同的数据集来说,AOF文件的体积通常要大于RDB文件的体积
  5. 根据所使用的fsync 策略,AOF的速度可能会慢于RDB

tips:
RDB单独开在对数据完整性和一致性不敏感情况

只做缓存情况下两种可以都不开

两者都开情况下系统会先找AOF文件进行数据恢复

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-05 12:06:24  更:2021-12-05 12:08:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:32:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码