00:00
好,同学们。那么接下来我们来按照。基本够用的原则,简单的给大家介绍一下撸啊脚本啊,还是要给大家说一下,因为首先啊,比如说我现在跟同学们说啊,同学们我们的5.0版需要把这两个合并,哎,按照官网的get和delete。一体执行,哎,我们要粘官网推荐的录R脚本,但是呢,粘贴倒是好说,无非就是拷过来粘到我们的文档里面对吧,弟兄们,然后呢,甩成一行加个死正串丢到这执行,好同学们啊,反正你们就先记着官网也推荐了啊,要用这个撸啊脚本好吧,就这么用,反正不会错。我相信我这么讲,弟兄们也挑不出什么毛病,但是呢,估计也是一脸懵逼,说这什么意思?好,接下来同学们,我们呢带大家呢入门,然后呢足够你用,其实你在我这两个基础上啊,你可以改很多东西了,也足够你用了。好同学们开工首先。
01:09
调用lur脚本,通过e evaal这个命令保证代码执行的什么原子性,说白了什么?多条命令撮合到一块,直接用return返回脚本执行后的结果值完活啊。杨哥不懂说什么话,弟兄们,我们先来最简单的,再来K1V一会吧。这次是不是一次原子性的操作?我们都说过在原子每一个命令几乎都是原子性的,对吧?那么下面我的目的先建个K1V1。对你各位同学而言没问题,下面第二个我要求给这个K1设45秒钟的过期时间,那你说这个会派K145秒,接下来给我查出K1的值get k1完活一条,两条,三条,这个时候就跟ready多了三次交互,我的要求请你把三条命令合二为一,最后给我返回get操作的结果值K1等于V1对不对?那比如说TTLK1,大家请看24秒钟对吧?那么接下来你用一种什么方法把这三条命令捏成一行,保证是。
02:21
一个原子性的命令,类似于三和一,甚至多合一,那么这个就是路va脚本的作用好开高,那么它的公式呢,是这样的,一脚本的javascript的语言,类似于啊,Script,然后number kiss k k k k k ask,参数参数参数啥东东啊,那们来吧,弟兄们二话不说,一切入门的程序都是从HELLO2开始,那么来吧。首先我们来看啊evilva直接告诉你,它呢,这有个脚本,那么这个脚本就是我们传说中的路R脚本,那么该怎么编写,待会会介绍一下语法规范,这什么numbers kiss,然后PK key,然后又是一大堆二,那么分别是什么呢?啊杨哥one事接hellowork来吧,你比如说啊这个脚本,那么我现在就hello。
03:14
乱一回车,哎,嚯。错误的什么参数啊,对于evil command这个命令根本不OK,对吧?那么接下来很好,那么evil,然后呢,我们要把这个hello world,我们把这个hello。在red上被以命令调用,给red一个返回,所以我们这儿请看这句话。Red调用UR脚本是通过evil命令,然后保证执行原子性,直接用什么通道return返回脚本执行后的结果,所以你需要返回什么,需要在这儿用一个return,然后呢,一般我们这hello路把里面的参数也好,或者需要返回的。
04:07
用个单引号括起来,好,同学们再来一次试试,哎呀,还是错误,我靠,杨哥,你是不是基础不扎实,你个水货写两次都写错了。那么首先。这是。有点类似于。唤醒词哦,就RED1执行到这明白了,要调到脚本明白了,注意这脚本就是这段没问题,后面他有个number kiss,先不要管弟兄们,我写个零代表什么都没有可回车弟兄们,Low hello,路啊,手到擒来。OK,这个就是我们最简单的撸啊,脚本入门,Hello word,你就记着你要返回什么,反正现在这个E就是掉一段脚本,哎,脚本的结果由return返回,那么你要返回什么?这当然我这是固定写死的,后面先给我添加个零,至于说这个零是什么鬼,待会我们聊好,同学们,Hello word hello,鹿啊,咱们先介绍到这。
05:14
那么继续对lor脚本的入门知识做相关的介绍。上一讲我们学会了hello word级别的最简单的hello lor脚本的相关案例。那么最终我们的目的呢?要给大家解释清楚这句话,为什么要用R脚本,它是如何运作的?好那么同学们,下面请看我们的基本操作相关的落R脚本入门案例的第二个case,下面大家都清楚set k1 V1,第二个过期时间设置对应的K30秒。第三个给我获得K,我要求你按顺序给我执行完这三条命令,且要求他们是同一条命令合在一块,三合一搞定,相当于换以前我要做这个操作,我执行三次,那是不是发生了三次的交互和IO,但是现在一次搞定,且包含原子性,所以同学们请看一眼。
06:20
第一个evil唤醒词,然后呢,这是路R脚本,听好,当我们写录R脚本的时候,只要调用ready的命令,一般而言直接写ready空这个操作,然后register call就是告诉。Red服务器通过eva可以解析这段脚本,把它们当做一行一个命令,一个原子操作来去进行处理和加工。好,那么同学们,来文岩搁到这。Sat逗号K1。
07:05
VEOK,好,第一个过,这是相当于我们调用的第一个命令,对标就是它,那么第二个我们再调用第二个命令red叫空,这个命令是干什么呢?那exp承担过期时间给谁K1这个K。多少秒直接给你写好,30秒过,这是我们的第二个命令,那么第三个命令是get k1好,得到的值是V1,那不对啊,杨哥,这个命令执行也有返回,这个命令执行也有返回。不要忘了。直接用瑞return返回脚本执行后的结果值,三个都有返回值啊,但是注意如果从这你就写在第一个就反馈了他的案例是跑不通的,那么此时我们呢,把我们的return代表退出的放在最后,那么也是我们的red第二空。好,同学们漏这。
08:18
是get,你get谁呀?K1 OK,好,脚本写完继续写个零一回车,同学们请看是不是反回了V1,三条命令是不是同时执行,何以见得get k1是不是V1TTLK1有没有type k1子砖类型那是不是原模原样把我们这三条命令和三唯一构建成一个整体统一执行,没人打断了。哎,所以说在这块请同学们要注意。那接下来如果杨哥我呢,直接在第一个命令这就干return可以吗?这个时候同学们请看,直接就告诉你这个脚本是不是有问题啊,听懂,换句话说它没有办法,因为三条命令都会有返回值啊,如果你放在这块将来返回三个,那么它这个语法是不正确的那。
09:21
我就想返回呢,轮到我们的下一节,咱是不是得加if else来进行判断啊?好,我们在这呢,就提一嘴,那么接下来请同学们继续set。来,刚才那个我们呢都清楚了,我调一个命令就用一个red,好,那别着急,看这个样子你也清楚,杨哥你这是不是key和value是写死啊。那如果我想通过船舱呢?来一步步剧透这个和这个。
10:00
是不是动态参数类似于GDBC里面的占位符,那么我只要输入东西跟它一一匹配,是不是就可以获得我们对应的操作?和期望的结果,好了,这提一组,接下来咱们呢,回复这个命令,Met,大家请看,一次性设定多个,刚才K1V1是一个,现在大家请看K1V1 K2V2,好,K1V1 K2V2这个命令我相信大家没有任何疑问。接下来。我们加深就有点类似于这个,这个咱们呢得唠唠了,来杨哥这个零你还没给我解释清楚呢,好了。继续E唤醒词,录完脚本,Read点课好了,那么你这个括,那么括什么呢?下面我们的命令就一个m set。
11:12
好,接下来第一种你固定写死K1V1 K2V2,好,我们先来试试K1。V1。K2。V2,各位同学没有任何问题吧?好了,就一个命令,Return,跳出返回值,写个零,OK,那么来,同学们get k1 get k2 so easy,那接下来。我想把这几个。给我用动态参数来进行绑定和执行。该怎么改写呢?还是熟悉的配方,还是熟悉的味道。只不过这听好。
12:06
下标换了。有这一个我可没有固定写死了,有点类似于我们的数组lur脚本里面下标,不管是K还是二,参数从几开始啊,从一开始。所以在这。粘贴。那么来,这是我们的第二个参数。注意,请按照官网直接给我大写,OK,好,那么同学们这个命令一直到这儿,一对一,一对一,二对二,二对二,你要懂,接下来听好,回到公式,我们就来唠了,这是个啥?Evil唤醒词,秒懂中间这一串落脚本苗头,接下来就是后面这有个numbers key。
13:09
KKKK,阿嘎,阿嘎,阿嘎,来一句话给你讲明白。我们前面写了零代表是没有穿任何参数这个事儿,如果你后面没有跟着K和。二参数。对应的绑定直接给我写零,那么现在同学们请看我有K1K2几个参数几个,听好,这叫numbers,什么鬼,只指定K,你先告诉我几个一二,所以我这写二,那么这个K的名字叫什么呢?叫KK1,然后呢K2,请看公式。Numbers k,你这写三,你这就给我写三个K,你这写四,就给我写四个T。那么。
14:00
我这写个二看一就会自动传给他。K2就会自动的传给他明白好,只要这个数字有多少个K写完了,后面的通通叫二参数,它会按照从左到右的顺序,一武汉一号位,二补上二号位来给你搞定。那么大家请看,假设我叫LUR1,这个叫LUR2。一回车,OK,同学们请看get k1get k2讲完了,所以同学们我们用最简单的啊,只有一个,相当于一个一串函数一样,那么现在一对应着一。二对应着二数字number告诉我有几个K,写完了以后剩下的全是对标参数,讲完OK,好,同学们,这个案例大家呢,做一下简单的练习,尝试一下,一多个命令合成一个,第二个知道了。
15:09
T和二的参数绑定,切记下标,下标从几开始一开始好,我们接下来升级进一步讲解带有什么if else判断型的R脚本。通过上一讲,我们明白了路R脚本的一个最基础入门的操作,且最重要的是明白了参数绑定和对应的key和X对应的匹配。那接下来我们要在上一步的基础上将加入if else相关的判断来进一步学习。更深一点的路R脚本的编写来,首先我们来看一下red分布式所路R脚本的官网对应的练习。我们大家都清楚,目前我们的程序卡在5.0版,这也就是说这个get命令和delete非原子操作需要把两个毫不相干的red命令合二为一。
16:10
官网都害怕我们写错,所以给我们了对应的R脚本的建议,那么来吧,那杨哥这个脚本该如何执行呢?整体拷贝。然后呢?粘到这,由于我们的诺亚脚本这个是官网来的,它不会有什么错,直接甩过来。一行带走,那么空格过多好。剪切回到这,我们呢,先set杨哥的RA所假设就1112222,对吧,假设这个就是有一个序列号了,Get register lock。好,各位同学有了吧,当然这个111,你就代表这个是流水号吧,好吧,这个呢,就是一个线程ID随便了,反正是个值啊,那么来官网上我们来尝试一下,执行一下我们的redr脚本,看看能不能。
17:08
把这个从判断到第上删除给干掉,唤醒词evil,然后这一段呢,就是脚本来同学们直接粘贴对吧,感到大家清楚,官网上直接拷贝过来的好了。那么几个T几个参数。从一开始,所以呢一个K。这个就是我们关键词这个key OK,那么这个就是我们的value值,直接一张贴执行,哎呀,无效的参数报错了。那么同学们,你们能不能找出我这儿哪里写错了?首先唤醒词没问题吧,这个录二脚本里面全是官网,我直接拷贝粘贴的,你应该没什么意见吧。后面按照我们这。
18:08
没有写零,现在有一个一个K,那么number。写个一具体占位符,这个K1就是它。具体占位符二个一,参数一,就是它前面我们两个命令执行过对不对?在这结果一执行我居然是错的,那么同学们你能不能火眼金睛看出来,我这哪里写错了,故意的?就是要给同学们认识这个错误。听好。他这报的错是无效的参数理由是在这儿他官网上就写了这段脚本,官网上的脚本当然不会有错,他没有写错,但是我们在实际用的时候听好。一般。我们在这个里面,如果最外层已经是一个双引号了,里面的路二脚本请修改为单引号,OK,是符号,这错了,所以初学者经常在这儿会犯这样的小毛病,OK,那么同学们一回车搞没搞定?
19:18
没问题了吧,那么我们再get现在是什么是个呢?所以这样是不是就达到了我们的判断get对应的K来进行一下相等的判断,然后第一塔删除如果这个ready分布式组这个K。现在这个K对应的是咱的这个值,一行搞定原子删除,否则的话对不起,删不了,OK,那么在这由于删完了以后,删成功了,返回一个页是处,然后我在get的话没有这个key了,得到一个呢,合情合理,OK好了,那么这个就是我们演示一下red分布式所落R脚本的官网练习,那么接下来呢,我们呢,自己就来学一下这个语法很简单。
20:10
各位同学,Lower if布尔条件这个括号可以省略,请看。官网也没有把它整体加括号,好吧,看着你自己的习惯了if,听着每一个条件分支啊,最后都要以then来结尾。这是第一点,第二个。只有最后一个兜底的这个后面没有Z,其他从if l if l if。全部要用then来进行结尾,这是跟我们的Java不一样的地方。第二个,只要是if,必须要有N的结尾。OK,就这一点区别,其他不用我再解释什么叫if l if了,对吧?都是加va程序,一看就秒懂,无非有点细节上的语法差异,其他问题不大。OK,套着这公式,那么接下来弟兄们我们就写一个条件判断的案例给大家呢,来进行一下讲解和分享。
21:20
好。嗯,把这个取消吧,那么下面呢,我们先一步步来啊,来学这个EL判断,我们现在呢,先用我们的路R脚本,就这么写一个来,就if最经典的啊,如果五大于7Z干嘛呢?我们呢就RETURN1OK吧,L if5小于7THEN,我们呢就RETURN2OK吧,那么L最后那么就是RETURN3,弟兄们end,我相信写这个你稍微有点程序基础的都明白吧,大于就是一,小于就是二,等于就是三,写一下这个语法好了,那好,这个听好是不是可以用我。
22:24
我们的这个。Kiss一来替代,这个是不是可以用我们的KISS2来替代,那这一个是不是可以用我们的二个一来替代,好了,那接下来。如法炮制。大于返回第一个参数,如果是小于呢,给我返回第二个参数对吧,那么所以说我们这儿就是二个二没问题吧,好了同学们,最后一个我们这是不是就是二个三听懂那么。
23:05
衣服后面要有then l if,就是说只要是有带着衣服的,后面都要有then,只有最后一个兜底的空空如也,但是最后要有end。好了,我们现在呢,只是普通的R脚本,没有涉及到red的命令,所以我没有写red空。好,各位同学,我们先来尝试将其整体拉为一行拿走,那么搁到这evil脚本命令。粘贴好,同学们请看几个K啊,两个,那么假设第一个K1是五,第二个K2是七,那么请问我们现在的参数有123没问题吧,那么所以说我就123,那么下面就看二是否大于五还是小于五,同学们请看。
24:02
二是不是K1现在就是这个2K2是不是就是我们这个五,请问二小于五,所以return参数二这个时候得到了我们的二号返回代表。K1小于K2,明白,那么继续,各位亲,如果我这写的是。八和五的关系。那么同学们。这是两个参数,大家看是不是返回一那么一样,如果我这两个八,请问是不是反馈3OK了吧?那么基于此我们呢,可以获得条件判断案例,最终就是这句话。这个黑框框是一段脚本。
25:02
Number case就是多少个key下标从一开始这大写绿框框动态传入参数下标从一开始大写XOK,这比如说是两个K或者多个K,蓝框框空格后面全是参数,兄弟们。If条件判断,打完收工,讲完到底,那么接下来就要按照着我们对应的。R脚本来解决我们程序的bug,那么我相信现在大家对于这个是怎么出来的也应该心里有数了。对于这段脚本的来龙去脉,If else该怎么写,我认为我已经讲清楚了,就记得两句话,只有最后一个没有then,其他只要是有if的,通通给我写then,第二个只要有if,最后结尾必须end来进行匹配终结讲完了。
26:04
那对于这个脚本我们搞定了,返璞归真,回到我们的第五点,零版的程序,想一想我们的初衷是什么,把这个是不是合二为一啊,所以老规矩。把我们的5.0版在这儿有了,所以呢,6.0版在这儿改进点。直接拿掉是不是修改为Lu?脚本的write分布式所调用必须保证原子性,参考官网脚本案例你直接用就行了,其他的没什么太多的,那么then finally这些一律不再废话好了,那么接下来street啊,Script。
27:08
那么这个该怎么写呢?回到我们刚才成功执行过的这段脚本,切记里面一律改成单引号,那么这个时候我们在RA里面执行成功过的啊,不废话,是不是直接拷贝进我们的Java好了,那么为了帮助同学们好看,If这个条件成了then,所以我们呢?Return一个空格吧,好吧,好了,那。我们对应的。获得零,然后end OK,妥了,这个脚本是怎么来的,写清楚也讲明白了,那接下来怎么用我们的red template来进行这段脚本的调用呢?
28:13
来吧,String,然后呢,EXE到没有。Excuse这块让你丢进去一个red脚本,然后有个list结构方式的piece,通过前面的讲解你应该明白这个是不是就是我们的参数number kiss有多少个key,然后这个不用我多说了吧,所以就用它那点开源码里面我们典型的来看一眼。我们呢,丢进去的是这个参数,一点开,那么什么叫red script,而且还带着个泛型括号呢,再点开这是个啥?这个是一个接口,那它就代表了各种参数的调用,好,那么我们来看看这一个接口,它有一个。
29:12
具体的实现类叫default right script,脚本刚好实现了这个接口,OK,好了,那么所以说我们最终要用到的类叫default right script。来,回到这,我们呢,直接new一个write script。搁到这儿撸啊,脚本丢进来,然后注意。它这一定强烈推荐大家啊,我们呢,回到我们的源码,它这有空的有一个有两个的请大家用,这个时候推荐用第三个告诉我们的Java程序,我调用这段路脚本以后,它是有返回值的,OK,好,那么同学们请看我这,如果这个括。
30:11
Delete成功了,是不是返回一,否则返回零,所以呢,在这你这儿既可以写long.class也可以写不尔行点class,只要你给了我一个符合参数要求的返回值就行了。OK,好,那你要说我不写,你能把我怎么样?待会我们说,那么接下来我们先把正确的调对考通,那么来,同学们。这个key请看它要求了,这就是我们的number key,它需要是list构型的,OK,那么RS点2S什么list,那么这个里面就是我们的K好了,最后一个就是我们的参数,那么我们的参数呢,它这呢要求你数组的形式对吧,三个点点写多个,我们这呢,不多参数就有几个一个,那是不是就是我们上面所写的这个u u ID value。
31:14
OK,好,那么同学们,最后这个final就是执行这段判断和删除合二为一的路R官方脚本讲完了,那我们呢,给我们的程序启动,待会儿呢,来测试一下,好,那么来同学们。回到这以后,我们的扣啊,在这都给大家呢,一步一步的写好,当场写完了,那接下来我们来说一下我们这个bug。在这块呢,啊,如果你用的是上面这个。表面上看它没问题,但实际后台会报这么一个标准,Output does not support支持的这么一个动作,OK。所以在这我们使用下面这个构造方法,因为你所写的路R脚本它是有返回值的,推荐大家用下面这个OK,也记这个是要执行的路R脚本,这个是带我们的什么result type返回类型的一个。
32:19
类型变量就OK,好,那么同学们,我们的脚本成功启动,那么接下来呢,我们呢,简单的呢,来看一眼,来执行一下。我们呢?回到我们的干脆啊,还是打开我们的解密。直接呢,拿我们的脚本来测试一下。恢复到原来我们那个库存5000,好,库存有了。打开我们的解密脚本,原来写过的这个,那么。5000个请求过来对吧,还是访问我WINDOWS1号机7777这个微服务地址聚合报告,现在呢,没什么好了,那这个程序呢,也已经启动。
33:09
不撤单就不打开地址栏测单击了,直接上这个杰米特并发,那么来同学们不废话,直接执行好,那么挨个挨个正在发送5000个,那么是不是又看到了熟悉的效果了,回到这儿,同学们请看现在是不是卖出去了,好大家看都有吧,对应的有时候有,有时候没有正常吧,刚刚删掉了,我们去查的时候没有,刚好这有个流水号,再加一个现场ADOK,那么老规矩,如果到最后我们的库存量是零,那么代表我们本次的脚本在并发下面5000并发下面测试通过,OK,好,到这儿是零,到这程序也停。没有任何问题,代表我们的6.0版的程序完整的保存了UR脚本的原子性,打完收工。
我来说两句