redis面试(四)持久化

什么是持久化?

由于redis是基于内存操作的轻量型数据库,所以如果发生宕机重启这种事情,存储的数据就会直接丢失,如果在里面存储了没有备份的数据,那么确实会对我们的业务造成一定影响。 所以我们要通过持久化的手段,将数据存入磁盘中,只要进入了磁盘,就不怕主机宕机重启。这部分数据除非主动删除,是可以一直存在,这就是持久化。

什么场景需要持久化?

一般情况下来说,我们使用redis只是给数据库加一层防护,防止大量的流量直接打到数据库导致数据库宕机,进而引发系统整体瘫痪。
在真正的业务处理中,大量访问的数据其实都是一些热点数据,那么这些热点数据我们做一层缓存,就可以拦截大量的流量,不需要将请求再发送给数据库。 减少了与数据库的链接,也就是减少了大量的IO耗时。 那么也就做到了单次请求的耗时减少,自然而然的 QPS就能整体提升。
扯得远了,说回到redis,在上面的单纯做数据缓存的场景,其实是没有必要进行数据持久化。 因为就算系统宕机重启,查询不到数据的时候,无非是去数据库里面再捞一把,重新存入缓存中就可以了,这部分数据是天然就在数据库里面持久化过的。

那说了这么多,到底什么场景才需要? 我给的答案是,除非是真的将redis当成所有业务数据的最终存储位置,所有的业务流转都是基于redis来操作,没有其他任何天然持久化的数据库如:mysql、es等等。 这个时候才是一定需要持久化的。
只要是数据可以通过其他手段重新更新到redis中的话,就没有必要在redis进行持久化操作。

哦,有的朋友可能会说,那总有些业务数据是先更新到缓存中,然后再更新到数据库中的吧,如果这个时间差里面,数据丢失了怎么办? 对于这种,redis是可以做分布式多节点备份,主节点宕机了,副节点一样会有一份备用数据。

又有朋友说了,那如果所有节点都宕机了,怎么办? 这种场景,我们要想一下,到底是丢失了多久的数据? 从数据进入缓存,到数据异步落库,这个时间差真的会很久吗?如果这个过程中要保证数据100%不丢失的话,redis可以做到,但是! 这个过程的产生的耗时,与直接进入数据库还有区别吗? 我们使用redis不就是为了提升性能对吧。

可能还有朋友说了,那如果真的是比较重要的数据,又对性能要求比较高,比如最常见的秒杀系统,可以是基于reids来处理的,如果这个过程中数据丢失了,那不就会造成秒杀系统出问题么。 对于这种,我只想说,如果在推广秒杀的这么重要的时刻,还能发生redis宕机的问题,最好是转行吧,别做商家系统了,会赔死的。
这些问题确实是在面试中遇到过

言归正传,但是redis既然有这个持久化的功能,那一定就是有人会问的,我们就来剖析一下

持久化策略

持久化的策略简单来说分为两种,AOF 和 RDB
AOF是一种热备份,就是在我们不断的更新数据的时候,他会不断的将我们更新的数据持久化到磁盘中,这个基本上时间差就是ms级别的。 缺点就是可能会对我们更新reids产生一定性能上的影响。
RDB是一种定时冷备份,就是每隔一段时间,将数据整体备份一次,备份的间隔期间是不会对我们的请求造成影响。缺点就是在备份的过程中可能会影响我们的更新操作,并且会丢失一定时间内的数据。

RDB

全称是Redis Database Backup file,直译是redis数据备份,我们称之为数据快照。

自动备份:
在配置文件中配置,需要注意的是,这种快照备份,是会阻塞redis服务器,不能处理其他命令,直到备份完成

# 900秒内至少1个键被修改则进行快照
save 900 1# 300秒内至少10个键被修改则进行快照
save 300 10# 60秒内至少10000个键被修改则进行快照
save 60 10000

手动备份:
执行命令,bgsave 这个命令是手动开启一个子进程,过程中不会阻塞其他的reids命令

RDB备份的流程
备份数据的时有一个fork(创建)一个子进程的动作,将主进程中的所有内容全部复制,然后进行一个数据复制备份的操作,这个fork是什耗费时间的。 所以如果性能要求比较高的话,建议可以关闭默认的save,在服务器上用shell写一个定时器,每天的固定时间去执行bgsave命令,可以提高系统的性能。缺点就是可能会丢失一定的数据。
在这里插入图片描述

AOF

全称是Append Only File ,是一个命令追加保存的策略。
将每个命令都存储到aof文件中,恢复数据的时候是进行命令回放来。

AOF的配置参数:

  • appendonly:是否开启AOF持久化策略,默认为no。
  • appendfilename:AOF文件的名字,默认为"appendonly.aof"。
  • appendfsync:AOF文件的同步模式,有always、everysec、no三种模式。
  • no-appendfsync-on-rewrite:在AOF重写时,是否停止同步,默认为no。
  • auto-aof-rewrite-percentage:AOF文件长度增长的百分比,超过该百分比进行AOF文件重写。默认100
  • auto-aof-rewrite-min-size:AOF文件重写触发的最小文件体积。默认64mb

同时开启aof和rdb策略的话,优先使用aof

备份流程:

  • 客户端发送写操作命令给Redis服务器。
  • 服务器接收到命令,将其写入内存中,并将该命令添加到AOF缓冲区。
  • AOF缓冲区根据策略可能会被同步到硬盘上的AOF文件中。
  • Redis服务器定期检查AOF文件的大小,并进行AOF重写操作,即压缩AOF文件。
  • 如果Redis服务器异常,会从AOF文件中读取命令进行数据恢复。

AOF重写操作 aof rewrite
设置了auto-aof-rewrite-percentage或者auto-aof-rewrite-min-size会触发重写操作。
size配置很清晰,意思是超过多大就要重写。
percentage的意思是,本次的文件大小,和上次的文件大小对比,超过百分之多少就进行重写。

为什么要重写aof文件
因为命令是不断接收的,所以文件肯定也是不断的增大,如果过大的话一定会对cpu造成负担,IO性能下降,内存消耗过大。所以就要进行文件瘦身操,将命令梳理一遍。 比如已经del的数据,那所相关的命令肯定就没有存在的必要了。

重写的时候也是fork出来一个子进程,然后扫描当前reids所有的键值对,生成一份新的aof文件。
这个过程中redis是没有阻塞,还在不断的接收新的命令,这些新的命令会存在aof缓冲区,等到新的aof完成的话,再将这些新命令存入新的aof文件中

总结

最优的持久化手段就是,AOF和RDB配合使用,因为AOF文件命令恢复数据是比较慢的。

  • 定时的通过shell来进行定时的rdb快照备份。
  • 然后再通过aof文件来进行缺失数据的补充。

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

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

相关文章

C# OpenCvSharp 打开4K高清摄像头

一、前言 整了个1200w像素的usb摄像头,使用 OpenCvSharp读取,读取和设置分辨率代码耗时居然10几秒,查询资料发现,必须对VideoCapture进行设置,使用DSHOW模式打开,并且设置分辨率代码下必须增加 指定MJPG编码…

pip‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

重新设置一下环境变量。 注意,这里后面没有斜杠 我之前就是因为环境变量中,这两行最后都有斜杠,导致提示pip‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

红旗E-QM5起火,一汽红旗否认车辆质量问题

近日,据媒体报道,7月31日下午,长春一辆一汽红旗E-QM5发生起火事故。 一汽红旗方面则表示:“现场勘查和初步调查表明,该事件并非因车辆自身质量问题导致自燃。疑似车辆在行驶过程中与路面井盖发生碰撞导致动力电池受损&…

计算机网络-基于PIM-DM+IGMP的组播实验配置

前面我们将IGMP协议和PIM-DM协议理论知识都学完了,现在开始进入实践,毕竟只有完成实践是最好的检验方式。IGMP是用于感知组播组成员,而PIM-DM是用于在域内构建组播分发树的的协议,本次实验使用这两项技术进行分析与实践。 一、拓扑…

upload-labs漏洞靶场~文件上传漏洞

寻找测试网站的文件上传的模块,常见:头像上传,修改上传,文件编辑器中文件上传,图片上传、媒体上传等,通过抓包上传恶意的文件进行测试,上传后缀名 asp php aspx 等的动态语言脚本,查…

电脑新加的硬盘如何分区?新加硬盘分区选MBR还是GPT

最近有网友问我,电脑新加的硬盘如何分区?电脑新加的硬盘分区选MBR还是GPT要看引导模式采用uefi还是传统的legacy模式,如果采用的是uefi引导模式,分区类型对应的就是gpt分区(guid),如果引导模式采用的是legacy,对应的分区类型为mb…

Spring Boot集成sse实现chatgpt流式交互

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 什么是sse? SSE可以指代两种不同的概念:一是指“服务器发送事件”(Server-Sent Events),另一种是指英特尔的“因特网数据流单指令序列扩展”(Streaming SIMD Extensions)。…

循环结构(三)——do-while语句

目录 🍁引言 🍁一、语句格式 🚀格式1 🚀格式2 🍁二、语句执行过程 🍁三、实例 🚀【例1】 🚀【例2】 🚀【例3】 🍁总结 🍁备注 &am…

Unity获取Animator动画播放完成事件

整理了一些在日常经验中处理动画播放完成事件的方法 方法: 1.Dotween配合异步实现 2.状态机计时方法实现 3.原生动画行为方法实现 方法一:Dotween异步方法 using UnityEngine; using System.Threading.Tasks; using DG.Tweening;public class PlayerAnimAsync : M…

Java——多线程(6/9):线程池、处理Runnable、Callable任务(认识线程池-线程池的工作原理,ThreadPoolExecutor构造器)

目录 认识线程池 介绍 线程池的工作原理 如何创建线程池 介绍 ThreadPoolExecutor构造器 代码实例 线程池的注意事项 线程池处理Runnable任务 ExecutorService的常用方法 代码实例 新任务拒绝策略 线程池处理Callable任务 ExecutorService的常用方法 代码实例…

如何从智联招聘网站快速抓取职位详情?两大技巧揭秘

摘要: 本文将揭秘如何利用Python爬虫技术,高效且合法地从智联招聘网站抓取职位详情信息。通过实战示例,展现两大核心技巧,助你在大数据时代抢占先机,为你的市场分析、人才研究提供强大支持。 一、引言:数据…

排序算法:冒泡排序,golang实现

目录 前言 冒泡排序 代码示例 1. 算法包 2. 冒泡排序代码 3. 模拟排序 4. 运行程序 5. 从大到小排序 循环细节 外层循环 内层循环 总结 循环次数测试 假如 10 条数据进行排序 假如 20 条数据进行排序 假如 30 条数据进行排序 假设 5000 条数据,对比…

荒原之梦考研:专科考研成功的可能性大吗?

专科还是本科不是决定考研能否成功的关键因素,决定考研能否成功的关键因素是自己是否有清晰的规划、是否有足够的专注能力,以及是否能够吃得了考研的“苦”。 首先要有清晰的规划,比如说,不是我们每个人足够努力就都能考上 TOP1 …

很简单的Win10+Win7双系统教程|UEFI篇

前言 前段时间有写过一篇关于Windows10Windows7双系统安装教程,但这个教程为了比较保险,就进入了WinPE维护系统进行操作。 但有很多小伙伴就有点搞不懂了,都不知道WinPE是什么系统,也不知道怎么去解决这个问题。 今天咱们就来讲…

centos7部署智能dns实战应用

主DNS:192.168.101.129 备DNS:192.168.101.128 原理: 一、下载软件 bind-9.17.9.tar.xz的下载地址:https://ftp.isc.org/isc/bind9/9.17.9/bind-9.17.9.tar.xz。更多的bind版本可以从https://ftp.isc.org/isc/bind9/下载。 二&a…

【深入探秘Hadoop生态系统】全面解析各组件及其实际应用

深入探秘Hadoop生态系统:全面解析各组件及其实际应用 引言 在大数据时代,如何高效处理和存储海量数据成为企业面临的重大挑战。根据Gartner的统计,到2025年,全球数据量将达到175泽字节(ZB),传…

学习安卓开发遇到的问题

问题1:学习禁用与恢复按钮中: java代码报错:报错代码是 R.id.btn_enable;case R.id.btn_disable;case R.id.btn_test: 代码如下:(实现功能在代码后面) package com.example.apptest;import static java.…

【时时三省】unity test 测试框架 介绍(适用于C语言进行测试的)

1,关于 unity test 测试框架的介绍 unity test 是 ThrowTheSwitch.org 的一个主要工程。它是专注于为嵌入式工具链而生的C语言单元测试框架。它可以适用于大工程或者小工程都可以。它的核心文件是一个.c文件和两个头文件。 备注: 下载源码地址&#xff…

应急响应-Web3

打开虚拟机之后,运行解题系统: 共有三个问题! 攻击者的两个IP地址 首先我们看到机器的桌面上还是存在phpstudy,那就还是先去看看是不是从web层面进行的攻击,上传webshell从而getshell。 利用D盾尝试对phpstudy目录进…

WordPress资源下载类主题 CeoMax-Pro_v7.6绕授权开心版

CeoMax-Pro强大的功能 在不久的将来Ta能实现你一切幻想!我们也在为此而不断努力。适用于资源站、下载站、交易站、素材站、源码站、课程站、cms等等等等,Ta 为追求极致的你而生。多风格多样式多类型多行业多功能 源码下载:ceomax-pro7.6.zip…