00:01
各位同学大家好,刚才呢,咱们完成了red在Linux系统中的安装,那咱们下面继续来学习关于re中一些相关知识的介绍,咱们主要讲两个内容,第一个给大家说一下re中6379端口是从何而来的,然后第二个给大家讲一下re中有一个底层的一个实验技术,叫做单线程加多路IO复用技术,那我下面给大家介绍一下,我们首先看第一个内容。刚才给大家介绍到了red的默认端口号是不是叫6379,它为什么叫6379,下面给大家来说明一下啊,我们来看一下,首先在我课件中有一张图,这张图中呢,其实画的是一个女演员,它里边一个名字中有这么一个名字,叫这个major,就是me z,翻译成中文叫梅尔兹,而这个就是63791个来源,为什么是这个来源呢?给大家说明一下啊,不知道各位同学啊,是否用过那种非智能手机,就是那种键盘手机,在键盘手机中有这么一个标志。
01:14
M键在六,就是M这个字母和六的这个字母在同一个键上,然后E是对应的三,R对应七,Z对应九,就是6379在键粉上,对就是me z,所以这就是它的一个来源,包括各位如果有兴趣你找一个非智能手机可以看一下me z对应的就是6379,就对应你手机上键盘上那个这样的内容,然后这是一个说明对大家了解一下。然后咱们再来看啊,在red中的默认,它一共提供了16个数据库,就是默认里边有数据库,跟我们装的买so一样有默认数据库,而它默认数据库下标从零开始,也就是从零到15,而咱们默认用的都是零号库,那下面咱可以试一下啊。
02:06
比如现在我在里边连一下这个数据库,然后在里边你注意咱们目前用的都是零号库,比如现在咱们切换一下数据库,我来个SELECT1,大家看这里边我们就切换到了一号库,比如我们再切换一下SELECT15,那目前就到了15号库,咱再切换到零,那回到我们最开始这个默认库,这就是它里边的数据库的这么一个构成,而我们目前用的都是零号库,其他库基本上用不到,而这些库他们的密码都是相同的。这个位给头知道一下啊,这是我们说的第一个关于6379这个端口号的一个来源,然后除了它之外,我们再说下一个内容,咱们之前曾经讲这个叫ma catch的,Ma catch呢,跟write相比有这么几个区别,不知道各位同学是否记得啊,咱们刚才曾经说过,首先第一个区别。
03:04
Me catch支持数据类型比较单一,而支持各种类型,比如说list set等等。然后第二个me catch不支持持久化操作,只能在内存中进行存储,而red既能在内存中进行存储,也能进行持有化操作。另外它还有第三个区别,就是里边写的这个区别,那我们来看一下啊,首先里边提到几个词,给大家解释一下,第一个词叫串行操作。那什么叫串行呢?给大家解释一下啊。包括串型的,大家可以想下啊,就是我们吃那个羊肉串有一个典型的这么一个过程,比如咱们简单画一下啊,假如现在这羊肉串,那我们吃的话,首先吃的是第一个,第一个吃完之后,我们再吃第二个,然后再吃第三个,再吃下一个,以此类推,咱是不是叫一个一个进行吃肉,这个就叫串行操作,也就是说我第一个操作,操作的时候后面要等,然后第二个操作,第二个完成之后再进行第三个操作,这叫串行操作。而大家看在我们的麦开中,它的机制怎么样,叫做多线程加速,多线程好理解,就是咱们同时有多个操作进行,然后每个操作中加上锁,多线程加锁属于一个基础部分,但是red跟它完全不一样了,Red注意啊,他用的是单线程操作,但是能实现出多线程的效果来,它用的技术叫单线程加多路IO复用。
04:39
这是跟M开一个最大区别,而它的效率更高,就是处理的效果更好,可以让你的CPU发挥出它最大的效能。那什么叫单线程加多路IO复用,下面给大家我来解释一下这个到底是什么意思,那我们来说一下啊,我给各位举一个具体的例子来说明这个问题,那举个什么例子呢?举一个各位同学啊,都知道例子就是这个买票的例子,但是买票呢,咱先不考虑网上买的过程,就考虑我们去火车站买票过程,那我下面给大家画一下。
05:19
比如说我现在啊,这个是我们那个火车站。写一下。大家知道火车站嘛,肯定可以卖票,而这里边,比如现在我们有很多人都去火车站买票了,比如现在我们有很多人去买票,大家注意啊,在买票的时候呢,我们现在买票是不可能买到,也可能买不到,如果说你买不到的话,咱们正常情况下,很多人可能习惯这里买不票我就走了,或者在这里一直等,而这个时候呢,在我们买票中有一个角色,这角色各位同学都知道叫做什么叫做。票的这个黄牛,或者说倒票的我们叫黄牛。那这个时候呢,咱通过这个黄牛是不能买票,比如现在我这里边有几个人,假如这是我的第一个人,这是第二个人,这是第三个人,当然可能有更多人,那我这里买票的话,我把我的需求告诉这个黄牛是不是可以了,然后买票过程是不是由黄牛帮我去做呀?咱可以理解黄牛买票过程就是一个单线上操作,由他帮我买票,比如现在黄牛买到第一个人需要的票,那我通知他,他来取票就可以了,假如说黄牛买到第二个人需耗票,那我通知他来取票就可以了,而这过程中大家注意啊,黄牛买票过程是不是一个单线入操作呀,但是它是怎么体现出这个多路L复用的的,给大家说一下啊,这过程肯定是一个。
06:45
单线程就是他自己买票,而不是多少人同时买,而咱们体现出多个L复用,就这里边体现。大家注意啊,比如说啊,我这个第一个人他想买这个从北京到上海的这个火车票,但是买的时候发现没有,他告诉黄牛,黄牛帮他去买到,但是黄牛是不是可能还没有买到,那大家说一号这个人在没有买票的时候,他要干什么?
07:10
是一直等吗?是不是肯定不是,是不是要去做他其他的事情,比如他可能去睡觉了,可能去喜来买,可能去工作了,可能做这个事情,比如说现在二号这个人呢,他想买这个从上海到深圳的火车票,那这个时候他也告诉黄牛了,黄牛是不是可能买到,是不是也可能买不到,如果黄牛没有买到的话,那二号这个人是不是也是去做其他事情呢?比如现在三号人他想买一个从深圳,比如到这个广州的火车票,那同样的过程是不是也是,如果买到他拿走,如果没有买到,他是不是要做他的其他事情,当然各位注意啊,黄牛在买这票的时候,比如说现在黄牛买到了到深圳的票,那黄牛会怎么做?说马上通知二号这个人让他来取票,其他人是不是继续做他的事情,比如说黄牛买到了上海的票,那他通知上海这个人,他来取票,其他人是不是继续做他的事情,所以这个过程就叫做多路爱油复用。
08:11
就是现在我是在买票,但是票还没有买到的时候,我还去做我其他的事情,就是让我的CPU一直在干活,而不会进行停止,不会进行休息,这过程就叫单线程加多路I要复用,而red底层就是用这种方式实验里边的进行操作的,这也是他跟ma k相比一个最大的区别。所以这个给各位做个说明,然后咱再总结一下哈,首先red默认是6379,就是对应这个四个字母,这个四个字母在我们手机键盘上对应的就是6379。然后第二个它跟me catchche相比,第一个区别me catchche支持单一的类型,Ready支持更多的数据类型,第二个me catch不支持持久化,Ready支持,第三个me catch用的是多线程加锁的机制,而red用的是单线程加多路IO复用,就是咱们说的这个过程,比如这里边买到票那我就买票,买不到票那我去做其他事情,等有票的话我再来取,这过程就叫单线程加多路L负用。所以这两个点就是我们介绍到的ready中的基康知识,大家对这些也要有一个基本的认识。
我来说两句