Redis(事务和持久化)(很重要!)

事务的定义:

Redis中的事务是指一组命令的集合,这些命令可以在一个原子操作中执行。在Redis中,可以使用MULTI命令开始一个事务,然后使用EXEC命令来执行事务中的所有命令,或者使用DISCARD命令来取消事务。事务可以确保在执行期间不会被其他客户端的命令中断,并且可以保证事务中的所有命令要么全部执行成功,要么全部失败。事务在Redis中通常用于执行一系列相关的命令,以确保这些命令要么全部成功,要么全部失败。

Redis中的事务主要是通过MULTIEXEC这两个命令来实现的。MULTI用于开启一个事务,事务开启之后,所有的命令都会被放到一个队列中,最后通过一个EXEC命名来执行事务中的所有命令。

Redis中的事务没有原子性,并不能保证所有的命令都会执行成功。

上图使用 MULTI开启事务,返回OK代表开启事务成功。上图中的(TX)就表示事务开始中,然后设置两个键值对,这里返回QUEUED而不返回OK,表示我们的命令已经被放到了队列中。

这时打开一个终端获取键值,发现为空,这时因为事务还未执行。

 

通过EXEC命令来执行事务。 

在执行事务后,再次获取键值,就可以获取到了。

 事务中的命令出现错误,并不会影响后面命令的执行。这里开启事务后让这三个键自增,由于k4是一个字符类型并不能解析为整数,所有就会出现错误。

 

观察上图获取到的值,发现Redis事务中命令出现错误并不会影响到正确命令的执行。

持久化的定义:

在Redis中,持久化是指将数据存储在磁盘上,以便在Redis重启时可以恢复数据。Redis支持两种主要的持久化方式:

1. RDB(Redis DataBase)持久化:RDB持久化通过将Redis在内存中的数据快照写入磁盘来实现持久化。管理员可以配置Redis定期将数据快照写入磁盘,以便在Redis重启时恢复数据。RDB持久化适合于对数据一致性要求不是非常高的场景。

2. AOF(Append-Only File)持久化:AOF持久化通过将Redis接收到的写命令追加到一个日志文件中来实现持久化。当Redis重启时,它会重新执行这些写命令来恢复数据。AOF持久化通常比RDB持久化更加安全,因为它可以提供更好的数据一致性保证。

持久化使得Redis可以在重启后恢复数据,从而避免了数据丢失的风险。管理员可以根据实际需求选择合适的持久化方式,并根据需要对持久化参数进行调优。

持久化是Redis中一个基于内存的数据库,如果没有持久化,那么一旦服务器重启或者断电,那么之前的所有数据都会丢失。这对于一个数据库是非常致命的。

第一种方式(RDB)   是某一个时间点上数据的完整副本,可以通过配置文件中的save参数来配置。

      

第一个参数表示秒数,第二个参数表示修改次数。

 有上图三种默认配置。

第一种解释为:3600s之内有一次修改就进行一次快照。其他同理。

除了使用配置文件来自动触发快照之外, 还可以使用save命令手工触发快照

 

上图的dump.conf就是生成的快照文件。

快照文件的缺点:

如果服务器在快照之后宕机了,那么最后一次快照之后的所有修改内容都会丢失掉。

 考虑到快照文件的缺点,所有RDB适合更适合用来做备份。

还有一个问题:由于生产环境中我们为Redis开辟的内存区域一般都比较大,那么内存中的数据同步到硬盘这个过程就会持续比较长的时间,这段时间内Redis都处于一个阻塞的状态,不能接收任何请求。

所以为了应对这种情况,Redis提供了叫做bgsave的命令,这个命令会单独创建一个子进程,来负责将内存中的数据写入到硬盘中,这样的话主进程就可以继续处理请求了。但是这个过程中还会有一定的性能损耗,因为fork一个子进程也是需要时间的,这段时间内Redis还是不能处理任何请求。没有办法做到秒级的快照。

 为了解决这种问题Redis又提供了另一种叫AOF的持久化方式。他的原理是在执行写命令的时候,不仅会将命令写到内存中还会将命令写入到一个追加的文件中,这个文件就是AOF。他会以日志的形式来记录每一个写操作。当Redis重启的时候就会通过重新执行AOF文件中的命令来在内存中重建整个数据库的内容。

开启AOF的方式只需要在AOF的配置文件中将appendonly后面的no修改为yes就好了然后保存退出配置文件就好。

进入配置文件的命令为:

vi redis.conf

然后输入/append,就可查看append的配置文件了,前面的查看save配置文件同理。 

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

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

相关文章

爬取春秋航空航班信息

一、使用fiddler爬取小程序春秋航空航班信息 使用Fiddler爬取春秋航空微信小程序(手机上由于网络问题,无法进入,使用电脑版) 搜索航班信息 搜索记录 使用Fiddler查找url(没有得到有效url) 继续查找,发现航班信息列…

数据结构:二叉树(初阶)

朋友们、伙计们,我们又见面了,本期来给大家解读一下二叉树方面的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 …

振南技术干货集:制冷设备大型IoT监测项目研发纪实(3)

注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 (制冷设备对于便利店为何如何重要?了解一下你所不知道的便利店和新零售行业。关 于电力线载波通信的论战。) 2、电路设计 2.1 防护电路 2.1.1 强电防护…

LeetCode:2304. 网格中的最小路径代价(C++)

目录 2304. 网格中的最小路径代价 题目描述: 实现代码: dp(dp有很多相似的经典题目,比较简单,不再给出解析) 2304. 网格中的最小路径代价 题目描述: 给你一个下标从 0 开始的整数矩阵 grid …

Redis篇---第十四篇

系列文章目录 文章目录 系列文章目录前言一、为什么Redis的操作是原子性的,怎么保证原子性的?二、了解Redis的事务吗?四、Redis 的数据类型及使用场景前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男…

前端js调取摄像头并实现拍照功能

前言 最近接到的一个需求十分有意思,设计整体实现了前端仿 微信扫一扫 的功能。整理了一下思路,做一个分享。 tips: 如果想要实现完整扫一扫的功能,你需要掌握一些前置知识,这次我们先讲如何实现拍照并且保存的功能。 一. windo…

什么是凸函数

假设函数是定义在某个向量空间的凸子集上的实值函数,并且,如果对于中的任何两个向量和,都满足: 则称为上的凸函数

动态规划求 x 轴上相距最远的两个相邻点 java 代码实现

如图为某一状态下 x 轴上的情况,此时 E、F相距最远,现在加入一个点H,如果H位于点A的左边的话,只需要比较 A、H 的距离 和 E、F 的距离;如果点H位于点G的右边,则值需要比较 G、H 的距离 和 E、F 的距离&…

前端实现表格生成序号001、002、003自增

我们最终想要实现的效果如图&#xff0c;从后端获取数据之后&#xff0c;不使用data中的id&#xff0c;而是使用自己生成的按照顺序自增的序号id。 script <template><el-table :data"sticker" border style"width: 100%" id"stickerList&q…

[Python人工智能] 四十.命名实体识别 (1)基于BiLSTM-CRF的威胁情报实体识别万字详解

从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章普及VS Code配置Keras深度学习环境,并对比常用的深度学习框架,最后普及手写数字识别案例。这篇文章将讲解如何实现威胁情报实体识别,利用BiLSTM-CRF算法实现对ATT&CK相关的技战术实体…

navicat --CSV导出数据乱码情况(三种情况解决方式)

CSV导出数据乱码情况分析及处理 在navicat 中有很多导出方式&#xff0c;大家都知道csv导出要比xlse要快很多&#xff0c;但是在使用csv导出时要防止乱码情况&#xff0c; 下面我列出三种处理方式&#xff08;如有其他方式大家可以帮忙补充一下&#xff09;&#xff1a; 文章目…

基于springboot实现班级综合测评管理系统项目【项目源码+论文说明】

基于springboot实现班级综合测评管理系统演示 摘要 随着互联网技术的高速发展&#xff0c;人们生活的各方面都受到互联网技术的影响。现在人们可以通过互联网技术就能实现不出家门就可以通过网络进行系统管理&#xff0c;交易等&#xff0c;而且过程简单、快捷。同样的&#x…

redis的高可用之持久化

1、redis的高可用考虑指标 &#xff08;1&#xff09;正常服务 &#xff08;2&#xff09;数据容量的扩展 &#xff08;3&#xff09;数据的安全性 2、redis实现高可用的四种方式 &#xff08;1&#xff09;持久化 &#xff08;2&#xff09;主从复制 &#xff08;3&…

这是基础校园二手交易框架

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>校园二手交易</title> <style> /* Reset stylesheet */ * { margin: 0; padding: 0; box-s…

项目经理面试经典问题大揭秘:聪明回答,轻松获得心仪职位!

作为一名申请了项目管理职位的求职者&#xff0c;要顺利入职必须过了面试这一关。然而&#xff0c;你可能会对面试官可能会问什么问题以及如何回答好感到迷茫。以下是我整理的一些关于项目经理面试问题及回答技巧&#xff0c;希望对你有所帮助&#xff01; 招聘方&#xff08;P…

uniapp 富文本以及移动端富文本的展示问题

富文本展示有几种方式: 1.<view v-html"content"></view> 2. uniapp自带组件 rich-text rich-text | uni-app官网 <rich-text :nodes"content"></rich-text> 3.uView组件 u-parse Parse 富文本解析器 | uView 2.0 - 全面兼…

神经网络常用激活函数详解

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

【科技素养】蓝桥杯STEMA 科技素养组模拟练习试卷2

单选题 1、两袋中分别有同样多的硬糖和酥糖&#xff0c;现将第一袋中的20块酥糖放到第二袋中&#xff0c;第二袋中的硬糖和酥糖相同&#xff0c;接着又将第二袋中的20块硬糖放到第一袋中&#xff0c;则第一袋中的硬糖是酥糖的4倍&#xff0c;问原来一袋中有&#xff08;&#…

基于STM32的电子时钟(论文+源码)

1. 系统设计 电子时钟是一种广泛使用的工具&#xff0c;其可以帮助人们准确掌握时间&#xff0c;本课题基于STM32的电子时钟系统的设计&#xff0c;在功能上设计如下&#xff1a; 具有电子时钟的基本功能&#xff0c;显示年月日&#xff0c;时分秒等基本信息&#xff1b;可以…

电脑盘符错乱,C盘变成D盘怎么办?

在一些特殊情况下&#xff0c;磁盘盘符会出现错乱&#xff0c;C盘可能会变成D盘。那么&#xff0c;这该怎么办呢&#xff1f;下面我们就来了解一下。 通过磁盘管理更改盘符 磁盘管理是Windows自带的工具&#xff0c;它位于“计算机管理”的控制台中。管理硬盘及其所包含的卷或…