Redis模块五:持久化

2023-09-14 14:37:06

目录

持久化的定义

Redis持久化的方式

持久化策略设置 

RDB VS AOF VS 混合持久化 

RDB 优点

RDB 缺点

AOF 优点

AOF 缺点

混合持久化优点

混合持久化缺点


持久化的定义

所谓的持久化就是将数据从内存保存到磁盘的过程,它的⽬的就是为了防⽌数据丢失。因为内存中的数据在服务器重启之后就会丢失,⽽磁盘的数据则不会,因此为了系统的稳定起⻅,我们需要将数据进⾏持久化。同时持久化功能⼜是 Redis 和 Memcached 最主要的区别之⼀,因为 Redis ⽀持持久化⽽Memcached 不⽀持

Redis持久化的方式

1.快照⽅式RDB, Redis DataBase)将某⼀个时刻的内存数据,以⼆进制的⽅式写⼊磁盘;
2.⽂件追加⽅式AOF, Append Only File),记录所有的操作命令,并以⽂本的形式追加到⽂件中;
3.混合持久化⽅式Redis 4.0 之后新增的⽅式,混合持久化是结合了 RDB 和 AOF 的优点,在写⼊的时候,先把当前的数据以 RDB 的形式写⼊⽂件的开头,再将后续的操作命令以 AOF 的格式存⼊⽂件,这样既能保证 Redis 重启时的速度,⼜能减低数据丢失的⻛险。

持久化策略设置 

可以在 redis-cli 命令⾏中执⾏ config set aof-use-rdb-preamble yes 来开启混合持久化,当
开启混合持久化时 Redis 就以混合持久化⽅式来作为持久化策略;当没有开启混合持久化的情况下,使⽤ config set appendonly yes 来开启 AOF 持久化的策略,当 AOF 和混合持久化都没开启的情况下默认会是 RDB 持久化的⽅式

RDB VS AOF VS 混合持久化 

RDB 优点

  • RDB 的内容为⼆进制的数据,占⽤内存更⼩,更紧凑,更适合做为备份⽂件;
  • RDB 对灾难恢复⾮常有⽤,它是⼀个紧凑的⽂件,可以更快的传输到远程服务器进行 Redis 服务恢复;
  • RDB 可以更⼤程度的提⾼ Redis 的运⾏速度,因为每次持久化时 Redis 主进程都会 fork() ⼀个⼦进程,进⾏数据持久化到磁盘,Redis 主进程并不会执⾏磁盘 I/O 等操作;
  • 与 AOF 格式的⽂件相⽐,RDB ⽂件可以更快的重启

RDB 缺点

  • 因为 RDB 只能保存某个时间间隔的数据,如果中途 Redis 服务被意外终⽌了,则会丢失⼀段时间内的 Redis 数据;
  • RDB 需要经常 fork() 才能使⽤⼦进程将其持久化在磁盘上。如果数据集很⼤,fork() 可能很耗时,并且如果数据集很⼤且 CPU 性能不佳,则可能导致 Redis 停⽌为客户端服务⼏毫秒甚⾄⼀秒钟。

AOF 优点

  • AOF 持久化保存的数据更加完整,AOF 提供了三种保存策略:每次操作保存、每秒钟保存⼀次、跟随系统的持久化策略保存,其中每秒保存⼀次,从数据的安全性和性能两⽅⾯考虑是⼀个不错的选择,也是 AOF 默认的策略,即使发⽣了意外情况,最多只会丢失 1s 钟的数据;
  • AOF 采⽤的是命令追加的写⼊⽅式,所以不会出现⽂件损坏的问题,即使由于某些意外原因,导致了最后操作的持久化数据写⼊了⼀半,也可以通过 redis-check-aof ⼯具轻松的修复;
  • AOF 持久化⽂件,⾮常容易理解和解析,它是把所有 Redis 键值操作命令,以⽂件的⽅式存⼊了磁盘。即使不⼩⼼使⽤ flushall 命令删除了所有键值信息,只要使⽤ AOF ⽂件,删除最后的 flushall 命令,重启 Redis 即可恢复之前误删的数据

AOF 缺点

  • 对于相同的数据集来说,AOF ⽂件要⼤于 RDB ⽂件
  • Redis 负载⽐较⾼的情况下RDB ⽐ AOF 性能更好
  • RDB 使⽤快照的形式来持久化整个 Redis 数据,⽽ AOF 只是将每次执⾏的命令追加到 AOF ⽂件中,因此从理论上说,RDB ⽐ AOF 更健壮

混合持久化优点

  • 混合持久化结合了 RDB 和 AOF 持久化的优点开头为 RDB 的格式,使得 Redis 可以更快的启动同时结合 AOF 的优点,有减低了⼤量数据丢失的⻛险

混合持久化缺点

  • AOF ⽂件中添加了 RDB 格式的内容,使得 AOF ⽂件的可读性变得很差
  • 兼容性差,如果开启混合持久化,那么此混合持久化 AOF ⽂件,就不能⽤在 Redis 4.0 之前版本了


 

 

 

更多推荐

乒乓球廉价底板和套胶对比分析

手机最近没办法写微博,在火车上没事,折腾了下,升级后可以了,我近期又打了很多套胶,我还录了段粘拍的视频一会分享。这次我还是说几款底板和套胶的感受,最近买了dj200不带A底板,paliocc和银河cn2,套胶方面用的更多一一解读。首先说为什么买dj200底板,作为我这种低端用户来说,我认为dj200就是我的天花板,这个

前后端分离毕设项目之基于springboot+vue的笔记记录分享网站设计与实现(内含源码+文档+部署教程)

博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌🍅由于篇幅限制,想要获取完整文章或者源码,或者代做,拉到文章底部即可看到个人VX。🍅2023年-2024年最新计算机毕业设计本科选题大全汇总感兴趣的可以先收藏

Docker 的使用

一、Docker的作用和优势软件集装箱化平台,可让开发者构建应用程序时,将它与环境一起打包到一个容器中,发布应用到任意平台中。能在单台机器上运行多个Docker微容器,而每个微容器里都有一个微服务或独立应用,如:Tomcat运行在一个Docker,MySQL运行在另外一个Docker,两者可以运行在同一个服务器。1.1

QT实现qq登录

1、登录界面头文件#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>#include<QMessageBox>#include<QDebug>#include"second.h"//第二个界面头文件#include"third.h"//注册界面头文件#

go语言常用标准库(Time)

go语言常用标准库(Time)1、Time时间和日期是我们编程中经常会用到的,本文主要介绍了Go语言内置的time包的基本用法。1.1.1.time包time包提供了时间的显示和测量用的函数。日历的计算采用的是公历。1.1.2.时间类型time.Time类型表示时间。我们可以通过time.Now()函数获取当前的时间对

stable diffusion的微调和lora微调代码版本

目前业界主流的sd训练基本都是基于diffusers和ldm的,这是huggingface的训练库,后者是stabilityai在compvis等机构的基础上完善的,我目前工作上推理一般采用webui架构,训练采用diffusers,因此需要把webui的ckpt或者safetensors转成huggingface形式

RabbitMQ消息可靠性(二)-- 消费者消息确认

一、消费者消息确认是什么?在这种机制下,消费者在接收到消息后,需要向RabbitMQ发送确认信息,告知RabbitMQ已经接收到该消息,并已经处理完毕。如果RabbitMQ没有接收到确认信息,则会将该消息重新加入队列,等待其他消费者继续处理。消费者消息确认机制能够保证消息不会因为消费者宕机或其他原因而丢失,从而保证了消

Polygon ID架构

1.引言身份分类:1)物理身份:如驾照、身份证等。2)数字身份:又分为:2.1)中心化数字身份:如传统的中心化web2网站账号密码登录。2.2)联邦身份:如通过facebook或谷歌账号授权登录不同网站或应用。2.3)去中心化自治身份:自己持有并管理数据。可有选择的公开或证明,具备隐私属性。PolygonID架构中主要

大模型应用发展的方向|代理 Agent 的兴起及其未来(上)

“介绍了人工智能代理的历史渊源与演进,接着探讨了大型语言模型(LLMs)的发展,以及它们在知识获取、指令理解、泛化、规划和推理等方面所展现出的强大潜力。在此基础上,提出了一个以大型语言模型为核心的智能代理概念框架,该框架包括大脑、感知和行动这三个主要组成部分。”01—长期以来人工智能领域一直追求与人类水平相当甚至超越人

视频画面噪点太多难处理?AI工具一键消除

很多时候我们下载或者录制的视频画面都会有带噪点的问题,噪点就像密密麻麻的小颗粒,这样非常影响观看,这个时候我们需要使用视频降噪功能,视频降噪可以提升视频内容的保真。那么视频画面噪点如何处理呢?视频噪点,也称为视频噪声,是指由于各种原因导致的视频图像中出现的不规则的杂点、花点或小斑点。这些噪点会严重影响视频的观感和质量,

Java基于SpringBoot的校园博客系统

第一章:简介本系统主要根据博主的需求做出分析,让博主更好的在线查看校园博客系统信息等,管理员后台管理系统数据等功能。从这个系统的操作来说,能够有效的进行信息的添加、修改、查询、删除一些校园博客系统信息,在一定的程序上能够实现了自动化。设计该系统的主要目的是为实现通过网络来减少人力和财力的投入,不断提高工作效率。文章首发

热文推荐