【Redis】RDB持久化和AOF 持久化

分布式缓存

单点 Redis 的问题

  1. 数据丢失(持久化)
  2. 并发能力不如集群(主从集群、读写分离)
  3. Redis宕机导致服务不可用(Redis哨兵)
  4. 存储能力差(分片集群)

Redis 持久化

RDB 持久化

什么是RDB

RDB (Redis Database Backup file):数据快照

默认保存在运行目录

# 主进程保存快照(阻塞)
save# 子进程保存快照
bgsave

Redis 停机时会执行一次RDB。

RDB 触发机制

在 redis.conf 中配置

# 900秒内,如果至少有1个key被修改,则执行bgsave
# 如果是 save "" 则表示禁用RDB
save 900 1  
save 300 10  
save 60 10000 # 是否压缩:建议不开启,压缩也会消耗cpu,磁盘的话不值钱
rdbcompression yes# RDB文件名称
dbfilename dump.rdb  # 文件保存的路径目录
dir ./ 
RDB 原理
  1. fork主进程得到一个子进程,共享内存空间
  2. 子进程读取内存数据并写入新的RDB文件
  3. 用新RDB文件替换旧的RDB文件。

fork采用的是copy-on-write技术:

  • 当主进程执行读操作时,访问共享内存;
  • 当主进程执行写操作时,则会拷贝一份数据,执行写操作。

AOF 持久化

什么是AOF

AOF (Append Only File):命令日志

AOF 配置

AOF默认是关闭的,需要在 redis.conf 中配置

# 是否开启AOF功能,默认是no
appendonly yes
# AOF文件的名称
appendfilename "appendonly.aof"

在 redis.conf 中配置命令记录的频率(刷盘时机)

# 表示每执行一次写命令,立即记录到AOF文件
appendfsync always 
# 写命令执行完先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认方案
appendfsync everysec 
# 写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
appendfsync no
配置项刷盘时机优点缺点
Always同步刷盘可靠性高,几乎不丢数据性能影响大
everysec每秒刷盘性能适中最多丢失1秒数据
no操作系统控制性能最好可靠性较差,可能丢失大量数据

配置重写AOF文件:执行bgrewriteaof命令,可以让AOF文件执行重写功能

AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义

# AOF文件比上次文件 增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100# AOF文件体积最小多大以上才触发重写 
auto-aof-rewrite-min-size 64mb 

持久化方式对比

持久化方式RDBAOF
数据完整性不完整,两次备份之间会丢失相对完整,取决于刷盘策略
文件大小会有压缩,文件体积小记录命令,文件体积很大
宕机恢复速度很快
数据恢复优先级低,因为数据完整性不如AOF高,因为数据完整性更高
系统资源占用高,大量CPU和内存消耗低,主要是磁盘IO资源,
但AOF重写时会占用大量CPU和内存资源
使用场景可以容忍数分钟的数据丢失,追求更快的启动速度对数据安全性要求较高常见

R

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/671326.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小微公司可用的开源ERP系统

项目介绍 华夏ERP是基于SpringBoot框架和SaaS模式的企业资源规划(ERP)软件,旨在为中小企业提供开源且易用的ERP解决方案。它专注于提供进销存、财务和生产功能,涵盖了零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询…

linux 调试-kdb 调试内核-1

目标:打印bcm2835_spi_transfer_one 是如何从用户空间开始调用的 1. kernel 配置 KDB配置选项 添加 spi 控制器驱动 和 spi 设备驱动 2. 调试流程 调试内核-系统启动之后 1. 开发板进入kdb,等待pc 连接 rootraspberrypi:~# echo "ttyS0,115200"…

文件加密软件排行榜前五:好用的文件加密软件推荐

后台有很多老板留言,说最近机密数据外泄的事情频发,让自己开始有了危机意识,想要提前针对企业安全问题采取措施,比方说选一款适合防泄密软件,但是不知道如何选择。 下面介绍几款软件,让大家了解一下市面上常…

贪吃蛇项目(小白保姆级教程)

游戏介绍 游戏背景: 贪吃蛇游戏是经典的游戏项目之一,也是很简单的小游戏 实现背景: 这里我们是基于32位的Win32_API进行实现的 需要的知识点: C语言函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32_API等 适合人群&a…

Android:弹出对话框方式梳理一览(一)

Android:弹出对话框方式梳理一览(一) Guide|导言 在Android开发中,对话框可能是我们与用户交互的非常常用的方式,包括弹出一个小界面,可能在实际场景中都非常实用。本篇文章主要就是对Android弹…

245 基于matlab的MEEMD信号分解及重构算法

基于matlab的MEEMD信号分解及重构算法。MEEMD方法的主要步骤包括:1. 定义多元信号集合,将多个信号进行集合;2. 对多元信号集合进行EEMD分解,得到一组IMFs;3. 将相同IMF进行平均,得到改进的IMFs;…

2路模拟音频光端机 JR-CA02

概述 JR-CA02光端机由发送机JR-CA02 Tansmitter和接收机JR-CA02 Receiver组成,通过一定距离长度的光纤相连接,传输2路Audio模拟音频(即1路立体声)。且每路音频分配输出。 JR-CA02光端机具有运行主要技术参数的监测功能&#xff…

03_Redis

文章目录 Redis介绍安装及使用redis的核心配置数据结构常用命令stringlistsethashzset(sortedset) 内存淘汰策略Redis的Java客户端JedisRedisson Redis 介绍 Redis是一个NoSQL数据库。 NoSQL: not only SQL。表示非关系型数据库(不支持SQL标准语法)。 …

Java特性之设计模式【享元模式】

一、享元模式 概述 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式 享元模式尝试重用现有的同类对…

RAG 修炼手册|一文讲透 RAG 背后的技术

今天我们继续剖析 RAG,将为大家详细介绍 RAG 背后的例如 Embedding、Transformer、BERT、LLM 等技术的发展历程和基本原理,以及它们是如何应用的。 01. 什么是 Embedding? Embedding 是将离散的非结构化数据转换为连续的向量表示的技术。 在自然语言…

spring高级篇(十)

1、内嵌tomcat boot框架是默认内嵌tomcat的,不需要手动安装和配置外部的 Servlet 容器。 简单的介绍一下tomcat服务器的构成: Catalina: Catalina 是 Tomcat 的核心组件,负责处理 HTTP 请求、响应以及管理 Servlet 生命周期。它包…

win2012磁盘空间不足,c盘正常,d盘无法写入,如何解决?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…