00:00
好,同学们呢,最后的阶段啊,呃,我们整合一下red的缓存和my logo的查询,再加上模板的输出,呃,给大家写了一段这个,呃,比较粗糙的这个示例代码啊,这段代这些代码呢,最好别直接用在线上,你仔细观察观察,里边是肯定有问题的。呃,在这儿呢,我们先把它跑起来,大家看看效果啊,首先啊,我们的目标目的就是让一个circle以作为key去缓存到呃这个red里,然后如果要是没有的话呢,去买circleq里去查,然后拉回来之后呢,把它扔到red里,下次再有相同的circle的时候呢,呃,我们就不再去数据库里查,然后把这份数据同时渲染到咱们的这个这个这个模板上啊,取其中的一个表,我们把这个lur文件先给它粘过来,我们跑一下,先给大家看看效果。这是这个撸,这个撸R文件,把它搞得这块就比较复杂了。嗯。
01:01
应该没什么问题吧,然后保存一下,然后接下来呢,把这个模板也给它替换掉。其实就是在后边呢,多加了一个循环啊。呃,主要是这敲代码太占用时间,所以在这个咱们课上呢,我就粘代码了啊。啊,这会儿呢,都搞定了之后呢,我们访问一下这个页面,先看看效果。来刷新。啊,这个是,呃,后边添加的东西。这个掌门后边打出了一个这个。这是一个table的地址,然后风清扬,然后令狐冲,这还是有稍微有这么一点点小问题的是吧。嗯,加个混行在这儿。然后再刷新。啊这啊一九十冯静阳1001啊这是呃,把这个circle啊作为key已经缓存到了我们的这个这个这个这个red里了,然后它从red去取的,我们给大家先捋一下。
02:08
这个模板里的这个代码。这儿有一个变量的是掌门,然后呢,这是一个table,然后我们把它。用这个读table的方式呢,把它给呃循环出来。然后这里边这个table里边每一行呢,都有呃,一些字段啊,就是department department ID,然后age name和EP number这个所对应到数据库里。大家看一下,就是这儿这个T杠,呃,第T啊。啊,还不是tdp,是这个DMPID。Name age和DPTD,还有EP number,我们看看这里边的数据,T杠、EP。
03:06
风清扬,岳不群,令狐冲啊,洪七公。啊,风千岳不群利狐冲风七公,这就是数据库里的东西,那么现在第一次查询的时候呢,会在这个呃,我们的呃这个这个数据库里去查,那怎么去印证一下呢,再去找到咱们这个red。Key芯,看这啊。这里边有一个key是select here from t_E。Get一下这个K。啊,这就是我们缓存下来的这个数据啊,然后我们现在呢,把它给删了,删了大家看一下。DL掉,然后再看现在就没有这个K了,对吧,那我们再刷新。诶,这是第一次请求,然后去这个my circle里边去拿数据了,然后并且set result了,啊,虽然说现在没显示,当然我们也可以让他把这个结果显示出来,这就是想想看看它究竟有没有去这个数据库里去取数据,对吧?那取出来之后呢,往这个red Switch set数据,Set也OK了,然后再刷新,这次再取的话就是从red里去取了,然后接下来我们看看呃,这个撸的逻辑。
04:29
你看啊,上来呢,我们先定义两个,呃,常用的变量,一个是C啊,这是做序列化和反序列化用的,然后circle是啥?这就是这就是一个K啊,Select from t-EP。然后我们先去连red,这是我们前面课讲过的,然后red呢,Get这个circle啊,就是上面这个circle,然后如果要是没有的话,在这儿if res。等于NG.no它空的Z,接下来呢,我们在这打一下啊,Circle找不着,就是我们刚刚这个它提示的,我们再把这个circle给删了,你看刷新这是提示circle,这个circle,呃,Select from t_EMT not found啊,这是在刚刚的这段啊里边打出来的。
05:17
那么接下来呢,就开启这个MYSQL的查询了,If res是这就是我们这个从re查的数据是空的,接下来用MYSQ去查MYSQL,查前面的是初始化对象,然后去建立连接,然后去连,连完之后呢,接下来。DB query circle,还是前面那个circle,这circle肯定是不能变,然后query回来之后呢?拿到这个资源,拿到这个SQ的这个这个这个返回值之之后。调用的set以这个circle为key,以呃买circle查询出来的结果这个res为value,往这里边去,往这个re去这个写,写入数据,注意你在这直接写入它的这个呃,Res的这个呃这这这个这个变量的时候啊,它会把这个地址给它给写进去,所以我们在这调这个东西叫CGS,这是咱在前边咱们用过的啊,我们给它encode一下。
06:16
把一个table,它返回的是一个table,我把这个table呢,给它给变成字符串,变成Jason,给它给写进去,所以它里边存储的这种格式就是这样的了啊,这是一个Jason格式。如果你直接存这个table,它只能存地址进去啊呃,在这呢,给它给存进去之后啊,这没有问题,然后结束啊,如果要是不让它结束,这就开始渲染了嘛,对吧,然后接下来呢啊,如果要是在前边儿这儿我们看。呃,从red里边去取数据,他没进这个if,也就是res,它不是空的,那么接下来就到这儿了啊,然后去初始化我的模板引擎,然后前面一系列的这些,呃,数据呢,就是就是上节课用的嘛,这个额外的多了一个数据叫掌门啊,这个K叫掌门Y6是从red里取出来的这个。
07:11
Table的Jason格式的数据。啊,然后给它赋值的时候呢,我们要把这个table,不是要把这个Jason再给他转回table啊,在前面是银扣的,这是迪扣的吊c jason.de code把table呢,里边的这个Jason啊,说起来有点绕啊,就是把字符串再变成对象。啊,然后接下来让他再去render的时候到这个模板。里边。拿到掌纹的这个对象在这儿输出的时候呢,已经不是字符串了。啊,我们看这个页面。你看。在这输出的时候,已经不是我们存在re的字符串了,它变成了一个变量了,啊,通过这个变量呢,啊,这个table变量,我们就可以从table里面去把它给循环迭代,把这个数据一行一行的展示出来。
08:03
啊,这是我们整合这三部分内容呢,啊,最后给大家做一个例子啊,这是。呃,Red my circle和目标引擎,这样就可以从缓存里边去取数据,并且让呃,这个oper s直接通过目标引擎渲染数据这个结果。呃,这完整的MVC在这里边就有了,当然现在业务逻辑比较简单,当然也不建议大家在这里边写更复杂的业务逻辑,因为大家能看到,呃,这个撸代码如果写多的话,你就得去分文件了嘛,然后这种开发呢,在你调试的时候是非常难搞的。那这会儿你再调试,如果要是报错了,自己写一些东西,你就得看它的这个ILO,然后一行一行逐步去排查啊,而且这个呃,错误呢,直接就是基本上就是这种crash级别的,它不像JVM,它能够捕捉到具体的这个异常信息,这个异常信息啊,比较简单,就是在撸啊里边。呃,这是呃,我们给大家做的例子,那最后呢,再跟大家来聊一聊这个的一些其他的科研项目,首先啊,是一个非常非常庞大的技术社区,我们从前面的这几节课程里边呢,给大家只能做到这个呃,引你入门的这个阶段啊,在。
09:14
呃,NG的二次开发,这个这个里程里边呢,才是万里长征刚刚开始的第一步。啊,如果真的对自己的项目需要做二次开发,你一定要深入去学习lua语言和这个呃,这个op相关的API,甚至需要去看NS和open的源代码,那这样你才能写出来真正高效的这个程序出来,那么现在已经有很多开源项目已经把这个呃。常用的这些需求呢,给我们解决了,人家已经写出来了,其实就是拿撸啊脚本写的,比如说现在呢,比较流行的几个网关。首先第一个呢,就是这个空这个年头稍微长一些啊,它也是基于oper。他做网关的主要的作用就是在里边去处理一些业务逻辑,比如说做一些健全啊,还有一些这个防刷啊,以及做一些请求的路由啊。
10:08
然后还有另外一个呢,是最近比较流行的叫API six,这也是基于op,以及还有这么一个叫a test getway啊,这也是基于opity的,现在这种项目呢,还是比较多的,那你如果只需要这个,呃,这种软防火墙,比如防刷。这儿也有一些这个其他其他的这个开源出来单独做这个,呃,Waf的这种。呃,这这种这种这种应用的,基本上就是做一些这种基础的防护啊,比如说防止刷新啊,防止色后注入啊,啊,以及做一些什么黑白名单这些东西。这个逻辑和功能啊,这种软防火墙的逻辑和功能,其实呃,没什么价值。现在有好多这种软防火墙的,它是收费的。它收费的这个点并不在于它的代码有多高效,而是在于它的这个,呃,这个库,也就是字典啊,对于哪些规则的匹配啊,这些是比较,呃,这个有价值的。
11:09
把这些东西呢,如果能够做得更完善一些,那么你的软防火墙呢,才能够,呃,防这个,这个防止一些恶意请求的时候才会更完善嘛,对吧?呃,这是一些其他的开学项目,有精力的话,同学们再去,呃,继续去学习,那么op re呢,我们就先讲到这儿。
我来说两句