00:00
各位同学大家好,我们继续通过前面的介绍,终于把SDS啊是什么?为什么要使用SDS啊,以及使卷类型底层的三大物理编码格式给同学们讲清楚了。那么通过前面源码的介绍,担心大家懵逼,所以杨哥在这做一个兜底小总结,那么熟悉杨哥风格都清楚理论实操小总结三板斧再次强调,你懂这个流程就行了啊,不需要你去靠C语言的这些源码大致能理顺读通就可以了,你是Java程序员,咱不是干C的,我们只需要大致了解就OK了,什么事有个度,你们说啊,能明白了。杨哥,我现在呢要精读re源码,我再去学一门语言,C或者C加加,没这个必要,兄弟们悠着点啊。所以说呢,在这块我们就理清楚这些顺序,明白了这些考点,完全是为了应付面试,参考一下它的内部是怎么写。
01:00
给他就OK了,所以搁到这儿,我把上面的给大家做了一张流程转换图,开高先开始啊,甩过来一个字符串,可能是ABC,也可能是A等于17,那么是不是这个呀?如果呢,现在yes,字符串的长度小于等于20,并且可以转换成long的类型,可不可以yes?然后再看看我们当前内存配置的max memory最大的内存是不是零,且我们那个数据共享的范围是在。1万以内的,那么直接从共享数据里面获得结束从头撸到尾,一杆子插到底,最简单的一个分支啊,那么来弟兄们稍微复习一下,大家都清楚啊。在这块我们说过了我们的object下的1万,那么根据我们前面的判断,在object c这块如果是小于等于20的长度,且string to long可以转换成高,然后也在这个范围以内配置max memory,且值在1万以内,就是max memory等于0O不OK,这个这个动作听说过吧,那么最后复习一遍,就是我们原来说过的看f get max memory,我们说过就是red内存,你怎么配对吧,内存策略,淘汰策略等等,这个呢,是配置啊,默认零六十四位系统里面无上限,几乎等价于你操作系统的内存了。OK,好,如果符合这些条件,直接从。
02:34
共享对象里面获得OK,好,这是我们的第一个分支,第二个还是跟刚才一样,搁到这,Yes,搁到这儿,但是对不起,可能这个数字是超过1万了,那么超过1万我们说过什么东道,它的条件是不是就破坏掉了,前面讲过,如果预先进来,这1万个里面可以作为共享对象,此时键值什么鬼不占空间,非常的紧凑,两个不同的K相当于指针,相当于引用,是不是都指向同一个,你K2没有必要新建一套,因为你在这个数字之间,这么说能跟上,好,那但是呢,不好意思,杨哥,到这一步以后,如果它超过1万了,那对不起了,那么我们要根据是嵌入式的还是raw未经开发原生的,再分别处理好,这是我的第二种情况,第三种情况。
03:32
也满足这这个满不满足啊,No,直接不满足,那么下面就像我们说的数字这一只过,那么不是数字,就是字符串右边这只,那么右边这只又细分两种情况,是否大于44个字节,如果字符串长度小于44,那么就是我们经常常用的编码为嵌入式,如果高于了,咱也别废话,直接给你返回原始对象raw,未经开发原生的OK,好,那么所以说弟兄们,这个就是我们的逻辑转换图,有四种可能大家呢,该记记,该背背背一下。那么最终我们的案例结论red对于子正类型只有整数才会用int,如果是浮点数,直接先将浮点数转换成字符串值raw,然后再保存。介入与RW底层数类型都是SDSOK是我们内部定义的SDSHD的一种结构,简碳动态字符串两者的区别是的,兄弟们。
04:33
嗯,最终就这么一张图,如果你是in特类型的字符串long类型整数的时候,Write object p tr指针直接复制为整数数据,不再额外的指针指向数字,节省了指针的空间开销。大家请看这没乱指吧,OK,直接自带自产自销自己带。第二种是嵌入式的,当保存字符数字符串数据且字符串小于44,嵌入式的类型将会调用内存的分配函数,只分配几块一块连续的内存空间。
05:11
这个是object,绿绿的这块啊,下面弄出来,还记得我们那说过一个加一,就指着我后面一步,哎,空间中依次包含red object对象和SDS2个数据结构,下面是这个对象,下面就是我们SDS,让原数据指针和CS啊,是一块连续的内存,这样就避免内存碎片达到高度检凑。第三种情况就是狂野粗糙板的高于44了,那这个SDS的数据量就变多又变大,这一块挤挤挤弄弄对吧,也挤不出来,没办法,这样紧凑,基本上属于什么麻雀腿上扯肉,蚊子肚里掏油,也整不出来了,所以只好跑这边干嘛。SDS和right object布局各自分家过,会给SDS分配更多的空间,并用指针指向它。
06:10
那么IW类型将会调用两次分配函数,我们在这儿源码上是不是也给大家说过这么一个动作,对吧?理一下,那么分配两块内存空间,一块用于s red object,另外一块用于包含SDS这么一个结构,所以这就是死类型最终的结论,OK,那么好,讲到这儿,那杨哥该怎么用呢?我晕了,不用你晕听好。内部会根据用户给的不同键池而使用不同的编码格式和物理编码,自适应的选择较优化的一种内部编码,这一切对用户都是透明的,你不用管我底层给你做好。所以这就是为什么red string类型这么强大,第一个人家用的是SDS,第二个物理编码分三种,是否数字嵌入式还是原生,最终就是我们的这一张图干嘛?
07:06
樱桃渐弱原声,OK,好,那么同学们卷类型就给大家介绍到这儿。
我来说两句