redis学习第二天

news2024/11/20 14:30:14

Redis事务

Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令插队。
Redis事务的主要作用就是串联多个命令防止别的命令插队。

Multi、Exec、discard

从输入Multi命令开始、输入的命令都会一次进入命令队列中,但不会执行,直到输入Exec后,Redis会将之前的命令队列中的命令依次执行。
组队的过程中可以使用discard来放弃组队。

悲观锁(Pessimistic Lock)

顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以在每次拿数据的时候都会上锁,这样别人想拿这个数据的时候就会block知道它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

乐观锁(Optimistic Lock)

顾名思义,就是很乐观,每次去拿数据的时候都会认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间有没有人去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量。Redis就是利用这种check-and-set机制实现事务的。

WATCH key [key…]

在执行multi之前,先执行watch key1 [key2],可以监视一个或者多个key,如果在事务执行之前这个(或这些)key被其他命令所改动,那么事务将被打断。

Redis事务的三个特性

(1)单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发来的命令请求所打断。
(2)没有隔离级别的概念:队列中的命令没有提交之前都不会执行,因为事务提交前任何指令都不会被实际执行。
(3)不保证原子性:事务中如果有一条命令执行失败,其后的命令依然会被执行,没有回滚。

什么是Redis DataBase

在指定的时间间隔内将内存中的数据集快照写入磁盘,它恢复时是将快照文件直接读到内存中。

Redis会单独创建一个子进程(fork)来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更为的高效。RDB的缺点是最后一次持久化的数据可能会丢失。

Redis持久化之AOF(Append Only File)

以日志的形式来记录每个写操作(增量保存),将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换而言之,redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复操作。

AOF和RDB同时开启,系统默认取AOF的数据(数据不会存在丢失)

AOF同步频率设置

appendfsync always
始终同步,每次Redis的写入都会立刻记入日志;性能较差,但是数据完整性较好

appendfsync everysec
每秒同步,每秒记入日志一次,如果宕机,本秒的数据可能丢失

appendfsync no
redis不主动进行同步,把同步时机交给操作系统

AOF持久化流程

(1)客户端的请求命令会被append追加到AOF缓冲区内
(2)AOF缓冲区根据AOF持久化策略【always, everysec, no】将操作同步到磁盘的AOF文件之中。
(3)AOF文件大小超过重写策略或手动重写时,会对AOF文件rewrite重写,压缩AOF文件容量
(4)Redis服务重启时,会重新load加载AOF文件中的写操作达到数据恢复的目的。

Redis主从复制

在这里插入图片描述
(读写分离)(容灾快速恢复)

什么是集群

“简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(集群系统中的单个计算机通常称为节点)都是运行各自服务的独立服务器。在某种意义上,他们可以被看作是一台计算机。这些服务器之间可以彼此通信,协同向用户提供应用程序,系统资源和数据,并以单一系统的模式加以管理。集群计算机通常用来改进单个计算机的计算速度或可靠性。”

复制原理

(1)Slave启动成功后连接到master后会发送一个sync命令
(2)Master接到命令启动后台的存盘进程,同时收集所有接收到的用于修改数据集命令,在后台进程执行完毕之后,master将传送整个数据文件到slave,以完成一次完全同步。
(3)全量复制:而slave服务在接收到数据库文件数据后,将其存盘并加载到内存中。
(4)增量复制:Master继续将新的所收集到的修改命令一次传给slave,完成同步。

Redis集群

Redis集群实现了对Redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点存储总数据的1/N。
Redis集群通过分区(partition)来提供一定的可用性(availability):即使集群中有一部分节点失效或者无法进行通讯,集群也可以继续处理命令请求。

什么是slots

一个Redis集群包含16384个插槽(hash slot),数据库中的每个键都属于这16384个插槽中的其中一个,集群使用公式CRC16(key)%16384来计算key属于哪个槽,其中CRC16(key)的CRC16的校验和。
集群中的每个节点负责处理一部分插槽。

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

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

相关文章

【c++基础】第六章 STL标准模板库

第六章 STL标准模板库认识STLstring字符容器库vector容器迭代器与空间配置器deque容器容器适配置list容器set容器map容器观察者设计模型认识STL STL的概述 STL采用泛型思想,把C中所用到的所有的数据结构,按照一定的标准,全部封装成了一个个…

虚拟机docker网络问题处理

问题 我们有2台设备,ip 为 172.20.30.1 172.20.30.2 ,虚拟机上的服务需要连接这2台设备,网络已经做通了,可以正常连接虚拟机异常关闭,重新开启后。发现服务有些问题,就打算将docker服务重新部署&#xff0…

Vue后台项目的记录 (一)

一、下载模板 简洁版: https://github.com/PanJiaChen/vue-admin-template 下载下来的文件介绍 build ----index.js webpack配置文件【很少修改这个文件】 mock ----mock数据的文件夹【模拟一些假的数据mockjs实现的】,因为咱们实际开发的时候,利用的是…

STM32——FATFS文件系统

可裁剪意味着可以选择部分功能,减小占用的空间。 与Windows兼容意味着可以在电脑上直接读取文件。 ①底层接口,包括存储媒介读/写接口(disk I/O)和供给文件创建修改时间的实时时钟,需要我们根据平台和存储…

深度学习笔记(1)| 导数、偏导数、梯度和方向导数的理解

1. 梯度(Gradient)的理解 深度学习尝试在权重空间中找到一个方向,沿着该方向能降低损失函数的损失值。其实不需要随机寻找方向,因为可以直接计算出最好的方向,这就是从数学上计算出最陡峭的方向。这个方向就是损失函数…

单页扒手-基于Node的实现

做网站的朋友经常遇见别人的好看的页面,想保存到本地自己用,可是用以前的老办法网页另存为,发现很不好,规则不好处理,路径也不好处理,用这个网页克隆(单页模板扒手)就很好处理了&…

阿里「杀手锏」级语音识别模型来了!推理效率较传统模型提升10倍,已开源

阿里达摩院,又搞事儿了。 这两天,它们发布了一个全新的语音识别模型: Paraformer。 开发人员直言不讳:这是我们“杀手锏”级的作品。 ——不仅识别准确率“屠榜”几大权威数据集,一路SOTA,推理效率上相比…

Zookeeper 4 Zookeeper JavaAPI 操作 4.7 Curator API 常用操作【Watch 事件监听】

Zookeeper 【黑马程序员Zookeeper视频教程,快速入门zookeeper技术】 文章目录Zookeeper4 Zookeeper JavaAPI 操作4.7 Curator API 常用操作4.7.1 Watch 事件监听4 Zookeeper JavaAPI 操作 4.7 Curator API 常用操作 4.7.1 Watch 事件监听 【基本概念】 ZooKeep…

异常见闻录-Java.lang.UnsupportedClassVersionError涨知识啦

今天有学生说自己的Eclipse的Java代码只能在新建的项目中运行,运行导入项目中类就报错 异常信息 java.lang.UnsupportedClassVersionError: com/demo1/Demo1Application has been compiled by a more recent version of the Java Runtime (class file version 5…

CMake入门

1. CMake的介绍: 当多人开发同一个项目时,最终要输出一个可执行文件或者共享库(dll、so等),就可以使用cmake了 所有操作都是通过 CMakeLists.txt(严格区分大小写) 来完成的 ----> 简单 2. …

C51——超声波测距 函数封装和舵机代码结合

要注意舵机转动中 延时函数要放在哪里 #include "reg52.h" sbit D5 P3^7;// sbit D6 P3^6;// sbit Trig P1^5; sbit Echo P1^6; sbit sg90_con P1^1; int cnt; int jd; double time; void Delay10us() //11.0592MHz { unsigned ch…

操作系统管程-地址-重定位-内存管理与存储管理

管程的基本概念:为什么会出现管程?信号量机制的不足:程序编写困难、易出错解决:Brinch Hansen(1973)Boare(1974)方案:在程序设计语言中引入管程成分一种高级同步机制管程的定义:是一个特殊的模块有一个名字…

使用MAXScript脚本编写圣诞树建模插件教程

一、前言 2022年圣诞节到来啦,很高兴这次我们又能一起度过~ 今年的圣诞节为大家分享用MAXScript脚本编写圣诞树建模插件的技术创意,喜欢的同学别忘记在下面点个赞! 二、创意名 一键圣诞树插件 三、效果展示 四、实现步骤 1.制作圣诞树的设计稿…

智能巡检系统:企业安全生产管理的智能助手

智能巡检是一种高效代替传统人工巡检的新方式,其依靠物联感知技术,通过物联网采集获取信息,自动记录巡检信息,及时发现问题,实现巡检科学化。 工业4.0带来的技术革新加速了企业的转型升级进程,传统企业的运…

F5张振伦:让应用安全、快速、可靠地交付到需要的地方丨2022首届全球数字生态大会

科技云报道原创。 日前,由杭州市人民政府和浙江省商务厅主办的“2022首届全球数字生态大会”在杭州国际博览中心成功举办。 本次大会以“新技术、新业态、新模式”为主题,邀请到国内外20余位演讲嘉宾和超300位专业观众线下参会。 与此同时,…

IB成绩换成GPA,美国大学是如何算的?

IB课程体系是全球公认的难度大、结构强的课程体系。 IB课程可以通过IB文凭课程(也称为IBDP)进行系统研究。IB课程体系是国际公认的基础文凭,世界上几乎所有大学都认可IB课程体系。这是否意味着IB在申请美国大学时会有优势? 事实上…

【vue系列-02】vue的核心属性,数据代理,事件

vue的核心属性一,vue的核心属性1,模板语法1.1,插值语法1.2,指令语法2,数据绑定2.1,单向绑定2.2,双向绑定3.mvvm模型4,数据代理4.1,数据代理的基本使用4.2,数据…

pytorch实现好莱坞明星识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章地址: 365天深度学习训练营-第P6周:好莱坞明星识别🍖 作者:K同学啊一、前期准备 1.设置GPU import torch from torch import nn …

获取rdp保存的凭证

获取用户保存的rdp凭证 当获取到一台windows服务器,可以尝试获取本地远程连接的信息,如果用户在登入rdp时勾选了 允许为我保存凭证的选项,则在该用户本地会生成一个凭证文件,我们只需要破解该凭证文件即可获取其明文密码。 通过注…

[含文档+PPT+源码等]基于SSM框架图书借阅管理系统开发与设计

博主介绍:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 [含文档PPT源码等]基于SSM框架图书借阅管理系统开发与设计 系统介绍 《基于SSM框架图书管理系统开发与设计》 该项目含有源码、配套开发软件、软件安…