00:00
好,同学们,我们继续请再坚持一下,请坚持到底,明说了啊,我们现在呢,已经打关打到第七关了,最后要到9.2,我们这个全部拉通了,那么你对这个问题应该的解读是一定有一定的深度和熟练度的,这样才配得上我们的两三年工作经验,你去大厂面试了,也能够跟面试官过两招,别人问你这两个问题,人家就问你,呃,分布式所在删除的时候你要注意哪些细节呀?答,都答不出来,那项目经理觉得你三年工作,现在能跟我过一两招的能力都没有,我干嘛找你?所以说各位同学扎实踏踏实实的,咱们一步一步走哈,请同学们再坚持一下。好,下面走起,同学们学到底,接下来各位亲,我们已经到7.0版的这个程序了。也做了删除的判断,那思考一下,在7.0版的时候,我们又会有哪些问题呢?问题也依然严重,为啥?因为现在的这个判断和我们的delete,他不是原子的,我们一定要注意,在并发性的情况下要注意原子的,那么这个时候将会出现一个问题,就是。
01:13
判断加锁与解锁有可能不是同一个客户端,那么这样会出现误解锁,所以说我们在这儿final块的判断和delete删除操作不是原子性的,那么同学们这种问题怎么解决?这个你一定要能回答出来,因为假设你在硅谷学了。毕业了以后找到工作啊,不管是硅谷的学习还是你工作上应该一定会用到,对吧,我们之前在你们零基础班的时候,我们就讲过,这种情况下,为了保证判断加删除是要个原子的,我们是会用一种东西叫撸啊脚本啊,那么也就是我们官网上给你强调的。Example,对于解锁,你看需要你完成的一个DEMO,一个案列,是不是把这张代码一张调用一下我们的nor脚本就可以了,所以说这儿我们需要把我们的程序改为一个录R脚本,保证原子性删除,OK,那么听到这儿你也可能会觉得杨哥你讲的也不咋地嘛,这种啊,Delete塔官网上也说了,要用撸R脚本,不就粘一段脚本调个e Val函数完活。
02:20
不重要,非常抱歉,现在的问题是他呢,很坑爹啊,他的意思是这样。这个我听到的电话录音啊,大厂的。因为大厂的面试官也跟各大。公司出来,跳槽出来的程序员斗智斗勇,现在的问题是啊。不可以用R脚本。你还有其他想法吗?首先我们肯定R脚本绝对能解决这件事儿,下面的问题是不用录R脚本,你有没有其他想法?你看这个就是什么面试官的考题是在这儿埋着坑等你呢,他知道今天来的这个人可能有一到三年工作经验,不再是零基础,是干过的。
03:05
他不是培训班刚毕业,他是其他公司跳槽过来的,有技术,有经验,那么这个时候。你不要告诉我撸啊脚本了,我们都知道了,聊一点我不知道的,那么请问。打斩。OK,思考一下,同学们,我暂停,那么各位亲,我们这儿叫唠唠,我们以前讲过的一个非常重要的知识点,是不是叫事物啊?OK,那么同学们,我们这儿是不是需要你做的是什么?判断和删除能够完成,那么尽量的要保证它的原子性。如果这道题目它。首先啊,我们先说啊,实际工作中我100%建议大家用撸R脚本,我有什么做的官网推荐和日常的工作上的经经验的积累,肯定用撸R脚本,但是现在哎,都是为了应付面试啊,不管你说面试。造航母还是工作。拧螺丝也罢,但。考官考了,我们只好是想着去解决,那么现在呢,Lawyer我们来看看啊怎么解决,第一种可以用ready自身的事物,首先啊再次强调是支持事物的,这这么说同学们没问题吧,那么这块的话呢,请大家呢。
04:16
一定要注意啊,不要到最后学,到最后以后说什么啊,支支不支持事物你都不知道这个是不可以,我们在硅谷的话呢,是绝对严肃认真的讲过这个问题,好,稍微我的网速有点慢哈,我先暂停一下录屏,等他出来,那么同学们还是没出来啊,那么大家捞眼,这是不是有个哎,来了来来了,这是不是有个东西叫transaction。那么从这我们可以得到一个结论,就说什么自身肯定是有事物transaction相关的特性的。好,那么来吧,我们来简单的复习一下啊。那么在这款啊,五年前我就讲red了啊,这块的话呢,后面新版的只是没公开出来,那么。请同学们注意,肯定是更加深度的挖掘,有兴趣去学习一下,OK,好,那么同学们走起命令复习。
05:08
首先我们write是通过market,有点类似于MYSQL里面的begin exec,有点类似于MYSQL数据库里面的commit,就是开启一个事务的点。巴拉巴拉一顿操作,然后呢,N条SQL语句保持同时成功同时失败,那么接下来exec类似于提交discard放弃这个事物啊。watch是监控漏管所。单个命令都是原子的,所以你要确保事物性的对象是一个命令的什么集合,将集合序列化,并确保处于同一事物的命令集合连续且不被打断的执行就叫red事务,Red不支持回滚。好,那么接下来呢?这些命令之前都讲过,不废话,咱们直接上代码说命令,带着大家先复习。好,同学们。首先我们sat k1V1 K2V2。
06:02
返回的是什么?OKOK,这已经跟你说过了,Red单个命令都是什么原子性的,所以说现在呢,不用担心,这些都没问题。下面问题我想set k1赛K2一条龙,要么同时成功,要么同时失败,那么我应该干什么?比方说market开启一个事物,Set k1。V1K2V22注意对比,单个成功了,它是返回,OK,现在我开启以后,人家返回的是什么。Q的,是不是加入了一个集合队列,好,说明我现在排队了,这两个我想批处理,类似于一起成功一起失败,然后这1E给我签。OKOK,没问题吧,那么get k1get2,好说改成了,从V1改成了V1,很简单,那接下来我们要看一下一个东西叫什么watch。当某个事物需要按条件执行时,要使用这个命令,将给定的键设置为受什么监控的状态,Watch,你监控哪个K?那么同学们,你们都清楚的,如果这个K被人动过了,是不是我们的整次提交就有可能失败?好,那么同学们,我们再来一次啊。
07:16
哎,直接写吧。Mar开始了吧,那么set开一,假设我们现在就是V1113个一,好,Set k2 V2223个二主线。我现在并没有执行这个命令呢,OK,但是此时抱歉,我们听得懂的。那么client连进来,那么突然有一个人是set k等于ABC。OK get kg ABC,那么不好意思啊,在你这次执行之前,是不是有人先捷足先登先改掉了,那么同学们请看一下我ex ec执行怎么着?OKOK,好,那么同学们我们来看一下这个效果,我现在问题是你们觉得这个K应该是ABC还是应该是我们的?
08:07
V11请大家思考。好,直接过来get k1怎么着?VE听懂了吧?那么现在我是不是确实也保证了我们?改之前是这个,你就算有人中间加三二没问题,我可以把你覆盖掉,这么说能跟上这种就是我们最经典的批处理,没问题吧。但是如。
我来说两句