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持久化

RDB快照(snapshot)

在默认情况下,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中。

save 60 1000 表示60s内有1000次命令,我们关闭RDB只需要将所有的save保存注释掉即可

我们还可以手动执行命令生成RDB快照,进入Redis客户端执行命令savebgsave可以生成dump.rdb,每次命令执行都会将所有Redis内存快照到一个新的rdb文件中,并且覆盖原有的rdb快照文件

缺点: 如果服务器突然宕机,RDB快照会造成数据丢失。

bgsave写时复制机制

bgsave子进程是由主线程fork生成的,可以共享主线程的所有内存数据。

子进程运行后,开始读取主线程的内存数据,并把它们写入RDB文件,此时如果主线程对这些数据都是读操作,那么主线程和bgsave子线程相互不影响。但是,如果主线程要修改一块数据,那么这块数据就会被复制一块,生成该数据的副本,然后bgsave子进程会把这个副本数据写入RDB文件中,而在这个过程中,主线程仍然可以直接修改原来的数据。

如果配置自动生成rdb文件之后,后台使用的方式就是bgsave

save和bgsave对比

命令savebgsave
IO类型同步异步
是否阻塞Redis其他指令否(生成子进程执行调用fork函数时会有短暂阻塞)
复杂度O(N)O(N)
优点不会消耗额外内存不阻塞客户端命令
缺点阻塞客户端命令需要fork子进程,消耗内存

AOF

AOF快照功能并不是非常持久,如果Redis因为某些原因而造成故障停机,那么服务器将会丢失最近写入,且仍未保存到快照的数据

从版本1.1开始,Redis增加了一种完全持久的方式;AOF持久化,将修改的每一条指令记录在文件appendonly.aof中(先写入OS Cache,每隔一段时间fsync到磁盘)

可以看下下面appendonly.aof文件

image.png

对于如何打开AOF功能,可以在配置文件中加入 appendonly yes

AOF和RDB的区别

持久化方式RDBAOF
启动优先级
体积
恢复速度
数据安全性容易丢数据根据策略决定

注意:在生产环境,RDB和AOF可以都启用,Redis启动时如果既有aof文件又有rdb文件,会优先选择aof文件来恢复数据,因为aof一般来说数据更安全一点。

Redis4.0混合持久化

当重启Redis时,我们很少使用RDB来恢复内存状态,因为会丢失大量数据。我们通常会使用AOF日志重放,但是重放AOF日志性能相对于RDB来说要慢很多,这样在Redis实例很大的情况下,启动需要花费很长的时间。

Redis4.0为了解决这个问题,带来了一个新的持久化选项:混合持久化

我们可以通过在配置文件中先开启AOF,然后在开启混合持久化

appendonly yes
aof-use-rdb-preamble yes   

如果开启了混合持久化,AOF在重写时,不再是单纯将内存数据转换为RESP命令写入AOF文件中去了,而是将重写这一刻前的内存做RDB快照处理,并且将RDB快照内容和增量的AOF修改内存数据的命令存在一起,都写入新的AOF文件中,新的文件一开始不叫appendonly.aof,等到重写完新的AOF文件之后才会进行改名,覆盖原有的AOF文件,完成新旧两个AOF文件的替换。

image.png

于是在Redis重启的时候,可以先加载RDB的内容,然后再重放增量AOF日志就可以完全替代之前的AOF全量文件的重放,因此重启效率大幅得到提升。

数据备份策略

  • 写crontab定时调度脚本,每小时都copy一份rdb或aof的备份到一个目录中去,仅仅保留最近48小时的备份
  • 每天都保留一份当日的数据备份到一个目录中去,可以保留最近一个月的备份
  • 每次copy备份的时候,都把太旧的备份给删除了
  • 每天晚上将当前的机器上的备份复制一份到其他机器上,以防机器损坏
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-08 08:10:56  更:2022-05-08 08:11:05 
 
开发: 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 0:30:11-

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