00:00
那这个memory cash的安装呢,我就最简单的用这个样M原安装了啊Yum in install。慢慢catch的。它比较小巧啊,就几百K,包括依赖在一块儿呢,才几百K啊,就光这个memory cash的,你看啊,才85K,非常小巧,那这会儿呢,装好之后,呃,Memory catch它没有像这样,呃这种这个客户端啊,我们想连它的话,呃,有这么一个工具叫memory catch的to。To,这个to呢,它不是去连接这个memory CA的,去做这个增删改查这个功能了,它可以去,呃连上之后呢,看一下我们当前这个预警的状态啊,就是填上我们这个IP地址127.0.0.1,然后端口号,它的默认端口号是11211,以后呢,同学们在看到11211的时候呢,你就应该能想到这是Mary cash的对吧,像6379,你能想到是谁3306等等。
01:00
然后这后边呢,我们跟上status。Sta。啊,现在他连不上对吧,好歹这个命令它执行了,说这个大概意思,我连不上这个服务,那就没起嘛,System ctl start memory catch的,这会儿起来再连一下。在这呢,里边我们可以看到它的一些这个运行的信息等等啊,然后这是呃,它的运行的状态,那如果我想要去呃。进入这个memory catch的啊,去加点数据什么的,大家知道啊,我们这个方案啊,现在的这个。NG,呃,这个和memory cash连接的这个,呃,这个这个模块它是不支持写入的,它只能去读,那也就是说我们在使用memory cash和NG个相连的时候呢,它只能去读数据,那么写数据呢,就要放到我的后台的应用,或者是这个上游的服务器,然后共同共享这一个内存啊才可以,那这个memory catch想写东西,那第一就是利用一些。
02:06
呃,开发的这个,呃,这个这个语言里边的这些API啊,或者是一些这个依赖的这些包可以去,呃这个这个访问这个memory catch去做登山改查,另外一方面呢,我们还可以。呃,直接更暴力一点啊,直接使用这个TEL net啊,去连这个memory catch的在里边去进行操作,接下来呢,直接用这telnet先把它装上。跳ne。然后t net,这是现在就有这个命令了,后边跟着IP地址,然后11211走。哦,在这后边呢,是加空格,不是加冒号来走。
03:01
妈的,这地址又填错了,好烦127啊,OK,现在呢,就连上了,连上之后啊,呃,我们先往里边去写点数据进去,那比如说这个,呃,往里加一个K啊,他在添加这个key value6的时候啊,有两个方法,一个是set,一个是at,顾名思义,Set就是直接设置值,没有的话创建一个A呢。如果要有的话,他就报错了,那我们就用这个随便用一个set,比如说我们呃。来一个name吧,这name呢,后边跟的这个参数,如果你要用red的话,后边是不是直接就跟这个value了,对吧,或者你再设置一些其他的参数。但是这个呃,Memory catch呢,在set这个,呃一个这个KY6剑池队的时候,它比较特殊,它是分两行来set的,第一行是set它的key,这个key呢,呃,首先是K的名称,然后后边呢,我们去跟一些其他的参数,主要是去描述这个Y6啊,它有多大,这是要提前我们要呃把它给计算好,然后给它写进去的。
04:07
在这后边呢,我们一般来说呢,还得额外的去跟三个命令啊,不是这三个参数,那第一个呢,是一些Meta data啊,就是一些原数据信息,那么在这呢,先写个零,然后第二个呢,就是它的过期时间,如果你设置成零的话呢,它基本上就不过期,然后第三个呢,就比较麻烦了,就是我们现在接下来要输入的这个Y6的字节数,比如说我们现在写个三,然后接下来我们看。换行了,它换行之后呢,需要我们去输入这个Y6,就是第二行去输入这个Y6,比如name等于呃,就是一名,很明显这不是,这不可能占三个字节对吧?啊,这我们现在的标记着是三个字节,你看它会。报错应该叫BA data t啊,我们这个对不上了,那我们再接下来再再来一下set name。003,那这会儿我能输啥?只能输个只能输这个三个字节的这个内容,比如123走注意看啊,这会儿它呃story啊表示已经呃存储成功了对吧,那这会儿这个key已经有了,Key是name对吧?那value呢,我们去get一下。
05:18
诶,他把这个value也给我们get出来了,并且并且把这个原数据信息呢也给我们带出来了,这就是memory catch的最最最基本的使用,那么接下来我们用这个,呃,这个NG啊,怎么才能去连一下这个memory catch呢?大家可以看。他的这个官方文档里边介绍的呢,就已经比较详细了,在这儿。这是它的这个官方示例,然后呢,我也写了一个这个例子啊,我直接把它给粘过来,然后大家看一看。
06:01
在这儿。我们一个一个的一边站着一边给大家解释啊。首先啊,我们在一个呃,Location里,我先把这清了。去连一下这个memory cash的啊,在这你看。Set一个变量,就catch的T,然后后边的跟这个uri和argument中间加了一个问号。这句话是啥意思呢?啊,就是我现在呢,希望把我当前页面里边的内容去呃,存到memory catch里,然后在用户访问当前的NG的时候,直接把内容给它展示出来,大致的流程是这个样子的。找一个空白的地儿啊。用户来访问我的NG。
07:02
它在访问这个词呢,有个URL对吧,比如说HTTP冒号双斜杠。上硅谷。点com,然后斜杠index.html。那我们把uri和arguments给它给存起来,也就是在后边的,比如说问号ID等于100。这部分内容就是uri。家argument。那么我以它为key,在我的这个上游服务器里把它给存起来,它还有上游服务器。比如说这是我们tomcat。当访问到这个资源的时候,我们的N呢会去memory cash里去读这份资源,Key呢,就是uri加arguments,就这东西就是key。啊,在这个memory cash里边去找这个资源,如果找到了之后读出来直接给我们的用户,就不再去我们的上游服务器去发请求了,啊这是刚开始的时候,我们去set这个key,它的作用。
08:15
然后我们再接着往下看这个配置文件。这个memory cash的pass,这指的就是去我们的这个memory cash的服务器去建立连接啊,连接的建立完之后,接下来呢。就去读取内容。呃,在这儿呢,它会默认以这个我们设置好的这个memory catch key这个变量去访问,呃,Memory catch,然后把这个key里边的内容呢给它拿出来,拿出来之后呢,呃,我们可以直接向这个用户去展示内容,那么这个root这个目录呢,就不需要了,把它给注释掉。在这它会同时还会默认去把读出来内容直接反馈给我们的客户端,在这添加了两个header,大家看这第一个header叫呃,X catchs,这个呃。
09:03
Stats啊,它是不是已经这个呃,读到这个缓存了,那如果读到的话,我们在这会加一个头叫hit,这是自己写,直接我们写上去的啊,然后另外再加一个header content type啊,Text HTML叉set u tf8,相当于强制把这个响应的这个内容呢,我们输出成这个HTML格式的。那如果他正常的能够访问到这个memory catch,并且把这个值能够取出来的话,这是没有问题的啊,那它就会输出内容,那如果要是出了问题之后,接下来呢,就会进入这个404啊,我们在这儿呢,还会再定义一个这个A配置。这个404。在这没有记是吧。呃,这个四零四一旦要出现之后呢,接下来我们需要去把这个请求,也就是当前的没有访问到,呃,这个K所对应对应的这个value,那么接下来就404了,404之后我们期望就是pro pass到我们的上游服务器,让他去访问这个上游服务器,由上游服务器来给我们去把这个。
10:06
P给它给加进去啊,然后同时把这个结果反馈给NG,相当于在这个过程当中呢,执行了一次反向代理操作啊去呃。去memory里没拿到数据,那我去后台去拿数据啊,他拿完数据之后,再让我们的后台应用呢,把这个得到的数据给我写到这个缓存里,以达到当前这个页面呢,我可以这个呃,内存化式的存储,存储到这个memory catch当中啊。呃,这是这个流程,那么在这个。配置的时候出现404之后,你在这儿呢,写一下404了之后呢,相当于我们已经失败了,访请求访问失败了,我们在这写一个。啊。那到这个匿名location里,那这location大家刚才我们跟大家讲了,这是访在在外部是访问不到的,对吧?到这个for back里边呢,接下来我去让他去访问上游服务器,怎么去访问,是不是可以pro pass pro pass到,呃,比如说我们后边再起一个这个tomca。
11:20
幺九。2.168.44.10104吧,然后8080。让他把请求呢转发到这上边啊,然后把这个呃所对应的这个key呢,也给它给写上,也就是我们之前想要访问呃,Memory catch的这个key。在这还可以再去,呃,复用一下,呃,我们在这呢,可以ADD一个啊,这个header呢,在这儿我们比如就叫这个。Memory catch的key。然后把这m catch key给他给。写进去,这就别加刀了。
12:00
然后这儿呢,也甭了,因为它有process pass嘛是吧。然后调换个位置。来我们保存一下,呃,这个44.104呢,我们把它给起来。啊,已经。已经已经关掉了是吧,起来。然后我们连一下这个104。还记得之前我们写过一个这个小程序,能读到这个请求头是吧。你们看一下这个请求头能不能在这儿加载到。连上了。这有这么一个这个炸包,我们起一下。然后我们再访问一下我们现在的这个,呃,这个页面,那第一次访问啊,它肯定是有问题的,当然我们后台程序呢,现在也没有往这个memory catch里去,呃,加这个数据,我们先看看这个效果啊。
13:06
来刷新。呃,我我我们需要是不是需要重启一下这个NG,刚才好像没重启吧。应该是没冲进,你把这个给退了。Q it,然后重启一下这个。N几个N几个词。重启一下,我们看看效果来走。大家看他报错了对吧?啊,这报错我们不慌,你看他报的什么错。呃,大概就是这这就是404,但是这个404是Tom cat返回的404错误的这种这种模板说明现在已经pro pass到我们的这个这个Tom上了,对吧。啊,那么接下来我们看看这个,呃,这样它可能就它就不404了,诶你看他直接就给我们。
14:03
呃,Process pass到我们的这个tomcat上了,有没有我们之前加的这个。这这个。这个harder。那现在它也是没有的,对吧,那我们再看一下hader没有,然后反应单里正常过去了,也就是这儿,呃,去读内容,他没读到对吧,然后没读到的话,404,然后报错到这个errorrrow page,然后开始fall back,然后到这个fall back里边,它processpa也过去了,但是ADD header,哦,这不应该用a header,我们现在用的是process pass,对吧。应该是这个。Processside。Sad header,然后把这个key给它加进去,然后我们看看。重启一下。哎,现在这个key已经出来了啊,他期望的这个key是斜杠问号。是吧,但是他没有内容,所以他会给我们process pass到我们的这个这个后台上,那么他想要的内容呢,接下来。
15:06
呃,如果说我们的这个后台实现了在Tom cat里边把内容给它读出来,并且把它写到这个memory catch里,这步操作我想有过后台开发经验的同学都能做出来,对吧?给他写进去之后,下次访问是不是就可以了,同时保证了他首次访问也没有问题,对吧?那么想要让他。下次访问不到这个process里,那我们现在先手动的去给它加一个这个P。我们tne进去。127。诶,T tnet进去了对吧,然后我们接下来呢,去添加一个这个key set斜杠问号对吧,然后零零,呃,我们我我们还是就就写五个字节吧,写五个字节就是12345。走,现在已经添加进去了,那我们再去访问它。
16:01
大家看这12345就出来了,这12345从哪来的,它是从memory cash里读出来的,这这流程呢,大致上。就是我给大家画的这样,用户先去请求N几N几里呢去先他去先连memory catch,如果有OK直接就给你读出来,如果没有的话。会走这个,呃,这个这个404啊,他会报404错误,但是没有给我,没有给我们的这个。客户端呢,直接返回404错误的页面,而是process pass到了上游服务器去tomcat里边去发了一次请求,那么这次请求啊,我们是呃手动实现的,那要自动实现的话,我们可以在tomcat tomcat这边呢,在读到process pass反向代理代理过来的请求之后呢,去把他携带这个header也一块给他。解析掉,并且去,呃,这个header,你看104的8080。
17:00
啊,那个header里边呢,啊,正常情况下有一个我们设置的这个key,就开那个key,当我们的这个后端应用啊,读到这个key之后就知道它想要啥了,然后把这个key呢,把把这个key作为key,把value作为我本来应该输出的内容,直接给它写到memory catch里。啊,然后下一次再有用户访问这个NG的时候,直接就能从memory cash里边把这个数据给它给读出来了啊,这就是基本的解决方案,我们从这个memory cash去,呃,从这个NS去访问memory cash,当然memory cash呢有很多不足啊,NS啊还可以去连接这个red。啊,那在下节课里边,我跟大家讲N和redds的呃解决方案。
我来说两句