00:00
那hello,同学们好,那接下来我们带着大家一起呃,来学习这个red的相关的这些配置和使用。呃,对比这个memory catch来讲,现在的流行程度更高,而且它的功能呢也更强大,呃,同时它的性能呢又不低啊,是非常哇塞的这么一个混沌中间键。呃,想必小伙伴们呢也都会用,那么我们在NT克上呢,可以通过这个额外的模块啊,或者插件化的拈呢去。呃,连接这个它和memory catch运行的原理一样啊,我指的是它这个访问连接的方式都是一样的,都是通过这个upstream来访问的,呃,后端的这个,呃,这个缓存中间键。那在red我们在使用的时候呢,也是需要借助这个第三方模块的,那么先把这个环境给大家搭起来。那首先呢,第一件事啊,我们先把这个最以最快的速度啊,咱们给它装上。呃,在这呢,我们用这个样M的方式去安装,首先呢,我们先去更新一下这个样M圆的这个,呃,这个一些信息啊,切换一下样M源,然后再接下来用样M直接去。
01:09
安装就可以了,这个安装的速度最快,省着下载编译了。呃,这个。这个样M安装啊啊,它有它的坏处,可能就是版本比较老啊,但好在现在,呃,这个red的协议它没有变,为什么叫REDDI2N module啊,就是我们要接下来用的这个模块,这RED2啊,它不是说red2.0。啊,指的是red2.0协议啊,它不是2.0的版本。啊,所以它的这个,呃,只要协议还可以继续沿用,那么呃,这个跟版本其实也没什么太大的关系,那么更新完这个语文之后,我们把这个装上。这个装完之后呢,接下来我们要去装这个RED2的NG X module这个模块,它是op re以下的大家可以看到啊,在github上。
02:10
呃,我们接下来打开这个地址,把这个模块啊,咱们把它编译安装上。嗯。二啊,然后它这个官方文档呢,已经非常非常详尽了,在咱们这堂课里呢,我给大家简单的举一些例子啊,跑一跑,然后剩下的呢,大家都可以参照这个官方文档里的这些,呃,这些说明也都比较简单的,这些英文呢也都还好,因为就是中国人开发的嘛。啊,所以这个学习起来难度应该不是特别大。然后我们把它给安装上,在这儿呢,去找它的发型版,最后是00:15。然后下载下来,我已经提前下载下来了,然后把它给传到。咱的这个。主机上。
03:02
嗯。在这N几个二。RED2NS Mo。唇上去之后呢,还是老样子啊,解压缩,然后变原装。不是二。嗯,然后我们去编译,重新编译安装N。Con。杠杠prefix等于user,包括X,然后杠杠pad。Module。嗯,然后在我的root下。走。
04:01
联系安装完成了,然后make,再有就是把它给扣过去对吧。嗯,装插件装多了之后呢,慢慢也就习惯了这些命令了啊。OK,然后把它给嗯挪过去,先把原来的挪走。User包括NG格。现在的NG格。绿色优酷NX。几个字点叉叉零零。然后把编译好的。几个字扣过去。下的。就这扣过去,然后重启服务。Restart编辑格式OK,重启完了之后呢,呃,接下来呢,嗯,我们先连一下这个red,看看正常不正常。
05:03
我讲道理,应该先启动一下是吧,刚装完start一下red,然后呃启启动应该没问题啊,用这边这个cri大家应该都挺熟的,直接就连上了是吧。看现在是啥也没有的状态,那么接下来我们呃配置,然后去操作一下,然后这个代码呢,我也就不敲了,直接给大家复制过来,我们看一下。呃,拎到咱们的这个。服务器找这个配置文件。克斯。CF,这。然后接下来我们在这呢,添加一个location。Oo然后在这呢,我们解给大家先解读一下default type,这和我们之前用的这个,呃,ADD的一个header content type其实是一个意思啊,你用default type,它也会把这个作为header添加到这个我们的这个响应,响应的这个头里。
06:06
然后这个RED2QUERY off,这指的是呃,想要想要去连接red,如果red设置密码的话,那你在这儿可以去做这个认证操作。我们暂暂时现在没有密码对吧,然后这有一个set操作set。Dollar value,然后first再看下边2QUERY set value。在这步操作里边呢,相当于是两步操作,前面呢搞了一个变量出来,这个变量的值呢,是个字符串啊,就是first,然后接下来呢,用2QUERY这里边呢,开始去执行查询。的查询当中,其中的这个set操作啊,然后这个key是one,然后value就是这个first啊,大概是这个意思,这两行,然后接下来要把这个命令发送给这个red啊,用这个red。
07:01
二杠pass,然后后边这个我们的这个red的这个地址。127.0.0.1,然后左手号6379啊,这样的话就直接就能够把这个命令给它给传递过去了,我们在这儿呢,保存一下我们看看。然后这样我们再开一个窗口。重启一下。Ctlart NG,那OK?然后接下来啊,我们去访问一下啊,刚刚我们配置的这个location啊叫。44.101是吧。这还是访问的memory的,然后接下来在这儿你看foo走。啊,他给我们返回了一个加号OK,这表示工作正常,这个加号加号OK是RA直接给我们反馈回来的啊,RA在增加这个啊,就添加数据或者site之后呢,它会返回这个标识,如果要是出错的话,同样他把这个报错信息给我们返回回来,那么接下来验证一下,在这看看这个key有没有添加进去。
08:10
P已经有了,就one对吧,那个Y6是啥呢?你get这个one。Value就出来了,就first对吧?啊这么简单的一个配置,那么接下来我们就可以使用nnu直接去读取,并且还可以去写入啊这个。里的相关的数据了,这是往里写入的操作,然后这个get的请求啊,我们再看一下这get的请求呢,还是一样,然后去pass啊,Pass到哪,这就是服务器的地址,然后RED2QUERY啊,这是安全认证,然后呢,这是一个第三方模块啊。它能够把我们的URL编码呢,重新转译一下,尤其是在UR当中有一些特殊字符对吧?啊,那我们在这儿呢啊,就暂时先不用它,然后我们可以看这儿啊,这后边有一个AG,然后杠K,这像这是NG的内部变量,是取我们URL上的这个呃参数的啊A呢表示这个参数下边的这后后边这个是其中的一个参数名称,它会把这个参数值给我们拿出来,然后在下边呢,呃执行S2QUERY,然后执行后边的get操作,然后把这个key给它给拿出来。
09:22
这就是大概的这个,呃,这个过程,那我们接下来给它给配起来。嗯,找到配置文件,然后在下面呢,再加一个location,这叫get。然后这个IP得换一件。要验证不要了。然后下边这个呢,呃,它需要一个第三方模块啊,咱就懒得装了,就它需要这个NG X set MIC这个模块啊,你需要再重新编译的时候,把它给打包进去。那在这呢,咱就不用这个,呃,这个编码转移了,直接把这个key给它给拿出来,然后get的时候呢,就get这个iins里的这个key,这就是相当于我传进去啥,然后呢,他给我查出来啥,然后保存,然后重启。
10:07
嗯,System ctl restart,那重启了之后呢,接下来我们试试这个get命令。呃,之前这是呃添加一个对吧,然后接下来我们去把之前添加的这个呢,给它给拿出来来看,我们就直接访问这个get,它会给我们返回一个负一啊,这明显就是有问题没返回OK嘛,对吧?啊,这主要就是因为后边咱没存参数,他拿不到这个参数。然后在这后边呢,呃,这个参数是。这啥来着?是K啊。在这K等于123,诶你看它还是负一,因为没有这个K,那你看Y。他给我返回了这个first,前面这个Dollar呢,呃,其实没什么太大意义啊,然后这个呃,First这就是他返回来的这个,呃,我们这个value,这就帮我们去查出来了啊,这是get请求。
11:07
嗯。它还有很多其他的请求,它这个功能要远远的大于之前给大家讲的那个,呃,那个mami catch那条插件。呃,在这个在他这个官方文档里,我们可以看到。嗯,在这儿。这里边儿呢,就已经介绍的非常非常详细了。带着大家简单的过一下。更多的例子呢,其实也都是复制粘贴了啊,给大家在这演示呢,没啥太大的意义。我们大家看一下这个文档。那这呢啊,这个foo,这是set y6,这是我们刚刚给大家试过的,对吧,然后这个get这一个K,它用了这个呃,这个这个这个这个UR编码转移的这么一个命令啊,相当于把一些呃额外的这些这个特殊字符在URL里面呢,可以给转移回来。嗯,在这儿,这个还有。呃,另外一种get的方式,大家可以看啊。
12:02
啊,这是这是。Set的方式啊,前面是get一个K出来,然后这是set一个key对吧,然后可以传进去K是啥,然后value是啥啊,然后在这呢。呃,其实还是在arguments这两个变量嘛,对吧,然后用RED2,我把它放大一点,大家看的可能清楚一些。用RED2QUERY,然后去执行set命令,之前我们是get命令对吧,然后在这之前最简单的也用了一个set命令,然后key是啥,Value是啥,然后直接给它pass过去,然后就可以了。呃,然后咱再看下边这里边呢,还有一个这个呃,PA pipeline啊,这么一个这种查询方式,这个reddi是支持pipeline啊,相当于一次性的发送好多的这个命令一块过去。啊,但是它不会并行执行,也就是他会按照顺序一个一个去执行,因为是单线程的嘛,啊,只要其中有一个没执行完,后边也不会去执行,那这样我就可以在一个连接上一次性的啊,这是两个条件,首先是第一,第一是一个连接,连接是复用的啊,在一个连接上一次性的执行好多命令,那这样的话呢,可以大大的提高这个执行效率,先set,然后再get,然后再然后再get啊执行一串命令。
13:21
呃,那么接下来再看一下,接下来这两个啊,它是可以执行肉query的啊,就是可以把这个,呃,比如说我们本来应该在这个的命令行里边发送一些命令也可以啊,把它作为这个呃,这个这个这个字符串给它传进去,让它去帮我们去执行,那在这儿呢,这上面这个是发了一个拼。我们在N这客户端里发一个P的话,如果正常情况下它有反应,然后它会给我返回一个对吧,然后这这个呢,也是get one,然后杠R-N相当于敲了一个回车。这是这个把,呃,原始的这个我们键盘的操作也都能够给它给带到,带到这个命令里边啊,这是肉块。
14:06
嗯,这下边这个它是把这个肉query作为呃参数,可以在这个get里边去get,还是这个道理啊,从这个uri里边呢,去取到这个参数,然后拿到参数之后呢,呃,传进去啊,然后让它去执行,只是我们可以在这个。啊,浏览器上去去操作了,然后下边还有一个in ne,这in ne呢,嗯。用的是l push啊,这lp push也是支持的,可以一个一个往里去加啊,先把它删了,然后再一个一个的给l push进去。然后get呢,还可以这个get的方法,这里面还可以用这个L,就是这个一些特殊的这个数据类型啊。啊,同时呢,这个RED2它还支持除了这个pipeline之外啊,它还支持这个连接池,就像我们连接数据库的时候,呃,就是连接数据这个买搜QL数据库啊,它有这个数据库连接池的话,就可以把之前建立好的这个网络连接呢,去达到复用的效果。
15:06
这样呢,也能极大的提高这个呃效率,给你看一下啊,在这在这个connection po啊,这连接池的配置呢,也比较简单,直接在这儿。配一个这个呃,Keep alive啊,然后就可以了,就保在这个upstream里边,我保持多少个连接啊,然后它就会复用这些连接啊。嗯,那我们再看看它的一些其他的命令啊,带着大家过一遍。嗯。前面这些这都是一些简单的这些介绍,这这个是这这也是介绍,咱们再看看下边这二的query啊,这咱们试过了啊,其实就是这么简单啊,直接就可以用就可以了。嗯,然后正常情况下,他给我返回这个OK啊是吧。然后这个肉query啊,有两种,一个是呃,直接叫一个肉query,然后还有另外一个是这个呃,不带符号的肉query,也就是这个Dollar服务啊,它不会认为它是一个变量啊,就压压根连这个变量都不。
16:06
这在这里边都不用的这么一个更加肉的一个query。本来这个肉query就已经是原始命令了,是吧,原始命令里边呢可以。直接在这个,呃,一次传递的时候呢,加换行啊,可以换好几次行,就是复稍微更复杂一点的命令呢,可以直接一气儿全给他传过去。啊,这个red,这个RED2PASS,就相当于向这个我们的啊服务器去发请求了,还可以去配置这个connect out啊,就是连接超时send time out呢,顾名思义就是发送时间超时。然后还有这个read timeout啊,都是这个快速失败的一些方法啊,指定时间之后。在这看啊,它还有一个叫buffer size的,这个指的是在读取呃,这个red的时候,这个数据缓冲啊,这是缓冲的概念。然后它在这也说明了,那最好呢,不需要它不需要这个特别大啊,它默认情况下呢,就用一个这个,呃,一个配置size,也就是内存的一个页的大小啊,4K或者8K,根据根据我们的操作系统三折为64位。
17:11
这个upstream呢,这是做容错用的啊,就是如果要是呃第一个没搞定,那么接下来我们就去研究第二个。啊,然后这是肯定破。呃,然后他还可以去select database啊,就可以切换在red里的这个数据库啊。正确的这几个命令啊,都是和这个lua相关的,呃,大家知道这个模块它本身是在这个op re下的,Op re默认就集成了这个。啊,这是,呃,一会儿也不是一会儿啊,接下来课程里面会给大家讲这个op ST,就是在我们的NG格,NG格里去怎么去执行这个撸R代码,你用这一段,这就是个撸R代码啊,这是额外的一门编程语言。嗯,这下边也是啊,PA red request bya,基本都和lua相关的了。
18:03
然后再再往下边儿。嗯。还可以去做这个发布订阅啊,大家可以看它这个客户端的功能是非常丰富的,几乎已经可以和一个正常的变成语言的客户端相媲美了。那么我们在呃,NGNG里去读取这个数据的时候呢,最主要的就是这个连接,只要它支持连接池,它这个性能呢,就还好啊,因为它连接可以复用嘛,对吧,然后其他的呢,它这个文档里边也没些啥了,在这呢,就是这个安装方式啊。呃,那么这就是我们访问。呃,Red的这么一种方式,但是只是说这一种额外还有另外一种就是直接拿这个语言来实现这客户端那个呢会更强大一些,而且我们在做二次开发的时候,比如有一些功能我想要去再稍微改善一下,或者想额外的再去增加一些,呃,个性化的定制的话,那个会更方便一些,毕竟现在我们用的这个。
19:03
呃,Memory catch的客户端或者客户端啊,这些呢,都是已经别人编译发布过来之后,我们只回来只能拿过来去使用的啊,我们想如果做一些额外的功能和增增改的话,那是很难的,因为这些都是基于C语言去呃编译的,除非你是一个京东C语言的程序员,那你去做起来呢会好一些,那如果要是非C语言的,像Java啊,什么Python啊,PHP这些程序员,你去写C语言的程序,那简直就是太难了。那red还有一个叫lua,呃的lua reds啊,在red这个包下的red这么一个包,呃,可以用它来去访问,在这个文档里边呢。哦,这这刚才我也看见了,嗯,看。对。在这儿。的汁啊,他推荐我们去使用这个lua red red用这个去,呃,作为这个访问,访问这个red客户端,这也是一个独立的包,这也是open re下的啊,那么后边呢,我们会给大家讲解open re以及nova re相关的一系列的这个包啊,很多这个包呢,都很好用,像这个连red的啊,这就可以。
20:17
啊,那么我们通过这个这套这这这几堂课的学习,那我们就可以用NS去,呃,简单的去连接一下这个外部的混沌数据库了啊,那我们。呃,这节课呢,就讲到这儿。
我来说两句