Redis冲冲冲——Redis持久化方式及其区别

2024-03-12 01:44

本文主要是介绍Redis冲冲冲——Redis持久化方式及其区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

目录

  • 引出
  • Redis持久化方式
  • Redis入门
    • 1.Redis是什么?
    • 2.Redis里面存Java对象
  • Redis进阶
    • 1.雪崩/ 击穿 / 穿透
    • 2.Redis高可用-主从+哨兵
    • 3.持久化RDB和AOF
    • 4.Redis未授权访问漏洞
    • 5.Redis里面安装BloomFilte
  • Redis的应用
    • 1.验证码
    • 2.Redis高并发抢购
    • 3.缓存预热用户注册+验证码
    • 4.Redis和MySQL数据一致性
    • 5.用户登陆布隆过滤器
  • 总结

引出

Redis冲冲冲——Redis持久化方式


Redis持久化方式

Redis提供了两种主要的持久化方式:RDB(Redis Database)和AOF(Append-Only File)。

  1. RDB(Redis Database)持久化方式:
    • RDB是将Redis在内存中的数据以快照的形式保存到硬盘上的二进制文件中。
    • 当符合一定条件时,Redis会触发RDB持久化操作,将当前内存中的数据保存到RDB文件中。
    • RDB文件可以通过配置来指定保存的频率和路径。
    • RDB持久化方式适合用于进行数据备份、灾难恢复以及在某个时间点上的数据快照。
  2. AOF(Append-Only File)持久化方式:
    • AOF是通过将Redis的操作命令追加到文件末尾的方式来记录数据变化。
    • 当Redis服务器重启时,会重新执行AOF文件中的命令来恢复数据。
    • AOF文件可以通过配置来指定保存的频率和路径,并可以选择不同的同步策略(如每个命令写入磁盘、定期刷写、无刷写等)。
    • AOF持久化方式适合用于提供更好的数据安全性和持久性保证,但相对于RDB方式,会产生更大的文件和更高的写入性能开销。

区别:

  • RDB方式相对于AOF方式,文件更小,恢复速度更快,但会丢失最后一次持久化后的修改数据。
  • AOF方式相对于RDB方式,文件更大,恢复速度相对较慢,但可以提供更高的数据安全性和持久性保证。

在实际应用中,可以根据具体的需求和场景来选择合适的持久化方式。一般而言,可以同时使用RDB和AOF方式,以提供更好的数据备份、灾难恢复和数据持久性的保证。

当同时启用RDB和AOF方式时,Redis会按照以下方式处理:

  1. 数据恢复优先使用AOF文件:
    • 如果启用了AOF持久化,Redis会优先使用AOF文件来进行数据恢复。
    • Redis会读取AOF文件中的操作命令,逐个执行,恢复数据到内存中。
    • AOF文件记录了Redis服务器运行期间的操作历史,可以确保数据的完整性和持久性。
  2. AOF文件无法恢复时使用RDB文件:
    • 如果AOF文件损坏或无法恢复,Redis会尝试使用RDB文件进行数据恢复。
    • Redis会加载RDB文件,将其中的数据恢复到内存中。
    • RDB文件是Redis在某个时间点上的数据快照,可以提供快速的数据恢复。

同时使用RDB和AOF方式可以提供更好的数据安全性和可靠性。AOF文件记录了每个操作命令,可以保证数据的持久性和完整性,但相对来说更消耗磁盘空间和写入性能。而RDB文件则提供了更快速的数据恢复能力,但会丢失最后一次持久化后的修改数据。

在配置Redis时,可以通过配置文件中的appendonly选项来启用AOF持久化,以及通过save选项来配置RDB持久化的频率和方式。具体的配置方式可以根据实际需求进行调整。

Redis入门

1.Redis是什么?

Redis入门(1)——Redis是啥 & 安装Docker的Redis & Redis的基本数据类型+常用命令 & SpringBoot整合Redis初步

在这里插入图片描述

2.Redis里面存Java对象

Redis应用(8)——Redis的项目应用:结合SpringBoot如何在Redis里面存对象 & RedisUtil工具类的封装 & 遇到的问题

在这里插入图片描述

Redis进阶

1.雪崩/ 击穿 / 穿透

Redis应用(7)——Redis的项目应用(六):布隆过滤器—白名单 ----> Reids的问题,雪崩/ 击穿 / 穿透【重要】& 布隆过滤器

在这里插入图片描述

2.Redis高可用-主从+哨兵

Redis进阶(2)——Redis数据的持久化 & CAP分布式理论(高可用性) & Redis主从搭建 & Redis的哨兵机制

Redis进阶(3)——在Linux上基于Docker容器Redis搭建一主二从三哨兵 & SpringBoot整合Redis哨兵

华为云云耀云服务器L实例评测|初始化配置SSH连接 & 安装MySQL的docker镜像 & 安装redis以及主从搭建 & 7.2版本redis.conf配置文件

3.持久化RDB和AOF

Redis进阶(4)——结合redis.conf配置文件深入理解 Redis两种数据持久化方案:RDB和AOF

在这里插入图片描述

4.Redis未授权访问漏洞

认识redis未授权访问漏洞 & 漏洞的部分复现 & 设置连接密码 & redis其他命令学习

在这里插入图片描述

5.Redis里面安装BloomFilte

华为云云耀云服务器L实例评测|在Redis的Docker容器中安装BloomFilter & 在Spring中使用Redis插件版的布隆过滤器

Redis的应用

1.验证码

Redis应用(2)——Redis的项目应用(一):验证码 —> UUID到雪花ID & JMeter高并发测试 & 下载安装使用

在这里插入图片描述

2.Redis高并发抢购

Redis应用(3)——Redis的项目应用(二):抢购图书 —> Redis高并发的问题 & 分布式锁Redission的使用

在这里插入图片描述

Redis应用(4)——Redis的项目应用(三):抢购图书2.0 —> Lua脚本 & Redis+Lua+Redission实现抢购 & Redission锁

在这里插入图片描述

Redis进阶(5)——Redis数据一致性 & 用Java代码加锁解决一致性 & 采用lua脚本实现减1的原子性 & 分布式环境下的setnex锁及其问题 & Redission框架的使用

在这里插入图片描述
IDEA启动两个Tomcat服务的方式 & 使用nginx进行反向代理 & JMeter测试分布式情况下synchronized锁失效

在这里插入图片描述

3.缓存预热用户注册+验证码

Redis应用(5)——Redis的项目应用(四):缓存预热,用户注册为例 —>注册的流程 & 缓存预热的方式,quartz方式 / @Schedule方式

在这里插入图片描述

RabbitMQ的Docker版本安装 + 延迟插件安装 & QQ邮箱和阿里云短信验证码的主题模式发送

在这里插入图片描述

4.Redis和MySQL数据一致性

Redis应用(6)——Redis的项目应用(五):缓存自动更新 —>Canal管道 & MySQL配置+安装canal & 入门案例 & Canal的项目应用

在这里插入图片描述

基于canal缓存自动更新流程 & SpringBoot项目应用案例和源码

在这里插入图片描述

5.用户登陆布隆过滤器

Redis应用(7)——Redis的项目应用(六):布隆过滤器—白名单 ----> Reids的问题,雪崩/ 击穿 / 穿透【重要】& 布隆过滤器

在这里插入图片描述


总结

Redis冲冲冲——Redis持久化方式

这篇关于Redis冲冲冲——Redis持久化方式及其区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799762

相关文章

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否