00:00
OK啊,来这个我再强调一下啊,就大家千万不要理解错了啊,就是你这个写缓存也好,或者你这个读缓存也好啊,这个其实不建议到说你这个out detail跳没有的情况下,就是他不管有没有,如果你有的话呢,那就说白了,说白了什么我先能够得到一条数据了,对吧,如果说你没有的情况下呢。那我就什么得不到这条数据?是吧,那至于我这个写缓存也好,还是一个读缓存也好,我都得去做啊,因为我是一个主呗,相当于是对吧,我的一条数据呢,可以什么跟你的auto detail的什么多条数据呢做关联,那我就不能够因为说我关联成功其中的一条out detail了,那我就走个else,那是不对的,对吧,这个并不是一个否则的一个关系。好吧,他还是能够什么跟别的去关联成功的啊,因此你要什么都要去写缓存都要去读缓存啊好。行,嗯,那接下来我们就想想吧,你要去写缓存,那你写缓存的话呢,又是那个问题对吧,你用什么类型,你用什么类型,然后呢,呃,你用什么类型,你的K是什么。
01:05
A是什么?然后呢,你的value是什么?然后呢,你这个写入的API用什么对吧?写入的API用什么?然后你这个读取的,诶读取的API用什么啊,然后呢,呃,过期啊是否过期。对吧,又是你要去考虑的问题了啊呃,来正好有个同学问问题,说这个写缓存跟读缓存这个顺序是固定的吗?大家想一下啊,这个是固定的吗?就是我先写还是先读。这个固定的吗?Order info是必须的。呃呃,这这这我咋我咋突然不明白你想问的这个含义是什么了啊,声明就是呃,你的意思是就这两个操作是一定要去做的意思,还是说这两个操作的顺序问题。
02:10
啊,顺序,人家说的是顺序,对不对,人家说的是顺序啊,顺序不是固定的啊,顺序不是固定的,你先写也行,先读也行,反正这两个事你做了就成了。对吧,顺序不是固定的啊。随便先写也行,先读也行啊,这不是固定的啊,这都可以的。OK吧,嗯,都可以啊,都可以行来吧,那我们先来先来分析这个了啊,你说我要先缓存了,那我要把这个order info写进去,那你说我在这个red中,我怎么去存呢?类型还是字符串,List site site,然后呢,还有哈希。用哪个啊,大家想想。就现在我是一条这个。Order info数据。对吧,现在我要把它写到这个缓存中。大家想想啊,这个我应该用什么类型。
03:01
一条数据,一条数据。要写到缓存中。这个是不是很直接,这已经很直白了吧,同学们我都说了,一条数据,一条数据,一条数据,这几个肯定不考虑了,对吧。能明白了同学们啊,然后呢,这个一般情况下,这个哈希我们也不考虑,因为哈希你要做成什么,做成这个fair的value,这种情况啊,就fair的value,那你说你有必要把你的一条数据给它拆成什么字段值,字段值字段值拆成这种格式去存吗?没必要,我们这样就分析过,因为我们将来可能不会说单独去查你的某个字段,我要这个数据,我就什么直接整条数据都拿出来,你就想想我后续给你关联成功以后,我是要你的整条数据,还是要你的某个字段呢?我要的是整条数据,那我就没必要给你拆分哈奇去存。对吧,你存的时候还麻烦,你将它取出来还麻烦,那我直接一个什么字符串,我就把整个order info存成一个什么加强数据不就完事了吗。能听懂吧,同学们啊,说这个字符串就可以了啊,好,当然了,也也会有同学是这么想的哈。
04:05
他可能在想,那我把你这个整个这个order info的数据呢,我写到一起对吧,我做成一个KV,然后这里面放的什么,放的就是所有需要进缓存的这个order info的数据。能明白我的意思吗?所有需要进缓存的这个order info的数据,我就放到一个表中啊,放到一个什么value中,那我就可以什么使用什么site呀,什么list呀,对吧,都可以啊,但这么做的话,我觉得稍稍显麻烦啊,为什么呢?因为你把这个order info,比如说我有十个order info我都放进去了,那我将来对于我的某一个order detail来讲。对吧,对于我的某个奥利跳来讲,他想到缓冲里边去找的时候,他只能先把整体的先拿出来,拿出来以后呢,我在你的什么拿出来这个结果里面,我再去找找有没有跟我对的那个人,那你每次都要什么做这个反复的一个什么判断。这个其实也是不太好的,但如果说我就只写成什么一个单独的一个什么K,对吧,我的一条数据我就是一个K,那我将来我的out detail我就什么可以什么直接拿上我的什么out ID,我就去定位这个数据就可以了,如果有那我就定位到了,如果没有那就没有呗。
05:08
对吧。这样会好操作一点啊,说这个地方我们就选择这个字符串了啊同学们,行,那K的话我们怎么写呢?K的话我就叫做呃,Order drawing吧,就是我们来个前缀哈,Order drawing,然后呢,你是order in for,那我要表明你是order in for,后面写什么,后面一定要写你的能够标识你这条数据的一个字段,那肯定就是你的ID呗,对吧,订单的ID。能听懂吧,好,那这个VALUE6是什么呢?VALUE6就是这个摘呗,就你这条数据的一个摘就完事,好,那你都是字符串的,那写入就是site,读取就是get。过不过气啊,过不过气啊,同学们。嗯。这个是可以过期的吧。因为你想想啊,我这个缓存的数据,我是不是只针对于我今天的数据就OK了呀,对吧,我顶多给你什么存一天是不是我可以过期的啊,过期就是这个24个小时呗。
06:08
对吧,啊,可以过期的啊行OK,那就分析明白了,分析明白以后,接下来我们就可以去写了啊,那首先呢,呃,因为你要去连你的red了,那我就来到这个for循环的外面啊,把这个red呢给它开一下啊好get加,然后呢,照这个加啊像这个用完以后呢,我们在这个for循环的外面啊,应该是应该这啊把这个。关一下啊行,那我们就回到这里面去写了啊,首先的话,我们把这个K先拼行叠好啊,这个叫做。这个叫什么K啊,这个叫做order,叫red order in for,嗯的key吧,对吧,怎么写呢?那我就这么写啊,把它拿过来好,拿过来以后注意啊,这个ID你要换了啊,换成什么,换成你的换成什么,换成这个order in for的ID。
07:02
OK吧,同学们,然后接下来啊,我们把这个value处理好啊,Value的话,呃,直接写吧,好吧,直接写来加4.sitesite什么呀,把你的red的order info key放进来,然后呢,你的value不就是你当前这个order in inform吗?把它处理成一个摘省就可以了,对吧,那我们就可以什么摘省。叫什么呀?叫做to Jason string对吧,然后呢,把这个order in front给他什么搁进去。能理解吧,然后呢,因为这个是一个呃,SKY的一个类,所以说我们要写上一个config啊。对吧,这么去写这就可以了,嗯。这个大家能看明白吧,同学们好,把它写进去啊好了,呃。然后这个写进去以后,然后呢,过期时间啊,这个过期时间的话呢,呃,那你可以什么设置一下,比如说这个Excel对吧,过期时间,然后呢,比如说你的的什么order key,然后呢,过期多长时间呢?呃,这个你自己去看看吧,你想怎么写啊,我们的我们的目标就是什么24个小时。
08:13
对吧,但是因为这个K啊,它为什么,呃,我想想啊,这个K啊,你说啊,我们比如说我早上这个早上凌晨零点钟,哎,我过来的数据,那我24个小时正好是到今天晚上的零点钟,那你说我今天晚上23:59,我来了一个对吧,我设置了24个小时,那其实他这只要一分钟就够了,对不对,一分钟以后我是不是零点零点就什么可以过期了吧。所以这个地方你可以自己去算一下,就算你算一个什么时间呢,就是到今天晚上零点钟的一个什么倒计时,还有多长时间,你可以什么动态的给他什么设置到这。对吧?啊,那我就不算了啊,我觉得这个多放一段时间也无所谓,反正你这个到时候也会过期啊,我就统一写成这个24乘以什么3600了,好吧,行呃,不纠结它啊,如果你想这个做的更精细一点,那你可以自己去算一下啊,还剩多长时间啊好来这是我们的这个设置啊,那么当然啊,你的这两步操作的话,其实我们是可以。
09:15
呃,合并成一步的啊,这个怎么合并成一步呢,加点叫什么ex。这就合并成一步了,把你的K拿过来,K拿过来放到这,然后呢,时间拿过来放到这儿,然后呢,这个。Value拿过来。对吧,这就合并成一步了。好吧,嗯,就set,什么叫做ex啊,就是你的set操作和设置时间的操作,我就这么一步给你搞定了。明白了吧,那我就把它写到这个缓存中了啊同学们好,行,那这个写到缓存中以后呢,下面是这个读缓存。那你这个读缓存的话,你要想明白他读的是谁哈。
10:00
他读谁啊?他是不是读我的all detail啊,同学们。对吧,他要读这个all detail啊,行,那你要读all detail的话,你就得先想明白这个all the detail。对吧,它是怎么写到这个缓存中的。你明白人家是怎么写到缓存中的,你这个地方才能够去读对吧,所以说我们先分析一下啊,这个order detail是怎么做的啊,你看一下啊,呃,这个是我的order info是有的,那到了这个地方以后。对吧,那else就一定是什么呀,这一定就是你的order info没有,但是我的order detail是有的。因为你不可能出现他没有,他也没有的情况下,他是一定有的。对吧,那么他有的情况下,他也要做这么几件事情啊,首先呢,做什么事情啊,做什么事,首先啊,他要干嘛呀,他要先去查缓存,就是读缓存对不对,读缓存,然后呢,如果说我能够读到缓存,就是就说白了啊,当前我的这条数据我是能够读到缓存的。
11:00
那我就什么直接合并的数据我就走了,如果说我读不到缓存,那我就要去写缓存了,这这个是可以有一个什么if else的,因为你想嘛,因为我是一个order detail,我这个order detail只能跟一个order info关联成功,假如说我从缓存中已经读到一个order info,我们关联成功了,那你说他还有必要再去写缓存吗?这就没必要去写缓存了吧,因为你都关联成功了,那我这个数据是什么就可以什么直接去走了呀。对吧,如果说我关联不成功的情况下,那我要写到缓存里面再去等等,说他们两个可以有有一个if else啊,说这个读缓存,然后呢,后面是这个写缓存,这是if else的啊,一会我们再去写啊好,那就想想吧,如果说他要去写缓存的话,怎么写。又是类型key value,然后呢,写入的API,然后这个读取的API好,然后呢是否过期对吧,大家想想吧,这个又怎么去写啊。
12:08
啊,这个先确定用哪个类型是吧。好,先确定用哪个类型啊,同学们,这一回大家想想啊,你们觉得用哪个类型,来大家投个票吧,啊,我看一下啊,看你能不能想到这个点上啊。投个票啊,我看一下啊,大家觉得用哪种类型比较合适哈。赛一对多。好,这个想到了一对多了是吧,OK,行,那你的这个方向是对的啊,方向是对的,就是这个一对一的肯定不用了,对吧,为什么呢?啊给大家去分析一下啊,你看一下啊,因为我的all detail吧,就你要明白哈,我的很多个all detail。
13:11
是可以什么跟同一个order info关联成功的。对吧,就是比如说我的某一个order info什么呀,它的多个订单详情是不是可以跟一个order info关联成功的呀,那么假如说啊,假如说我现在。我有很多什么,很多这个all detail。对吧,你看啊,这个这个这个我同时都出现了这个批次中,那我这个批次中。对吧,我一看诶我没有关联成功,你看这不就相当于是order inform没有,但是我order detail有嘛,对吧,他要到缓存来去找假设说这个不在缓存中啊假设。假设这个不在缓存中对吧,那你看啊,他一找诶没有没有怎么办呢?没有我就要把这几个all detail呢都写进来,那你说我是零散的写进去好呢。
14:00
还是说怎么写进去好啊。如果说你是零散的写进来的啊,就是你是你,我是我,他是他,那将来我的all in,比如说啊,我的下一个批次。啊,假如说我下个批次我的out info来了,那我的out info来了以后呢,注意那我就要去查缓存,那我查缓存的时候呢,我应该怎么查呀。他就是去想,诶,我有几个奥的底能够关联。对吧,那我要去找他,还得去找他,还得去找他,你就要找很多次。而且你找了多少次,你就觉得找找明白了呢,或者是全部都找到了,你也不知道。对吧。所以这个东西你就不太好去处理。啊,那既然我们是能够明白你的这个就是你的每一个order detail哈,它一定是能够只能够跟一个order info关联成功的。对不对。那这种情况下,我我可以这么去考虑啊,我的order detail,我在写缓存的时候呢,我就可以考虑把所有就把某一个order in for的所有的order detail写到一起。
15:07
你能听懂我的意思吧?就是我判断一下,比如说你这个,比如说啊,你的这个你的这个out detail是属于这个1001这个订单的,你呢也属于这个1001这个订单的,好,你呢,也属于这个1001这个订单的,行,那我就把你们仨呀。都写到一起。对吧,写到一个集合中,那你写到一个集合中以后呢,将来我的order info来了以后呢,我就什么按照我的规则,什么预定的规则,就是按照我的1001这个订单,对吧,我去找你,我直接找到以后,它里面所有的东西都是可以跟我的auto info关联成功的。这样是不是更好一点啊?对吧,所以说你这个如果你能能够分析明白的话,那这个这个肯定不要了,然后这个也不用,也不用什么排序,这个也不要了,哈希的话呢,我们也不会采用,因为我们结构不太对,那就剩他们两个了。对吧,那么他们两个谁会好一点呢?这个赛会更好一点。赛会更好一点,因为什么呢?因为它有一个驱虫的功能哈,就是就说白了,如果说我们有一些这个,呃,突发情况,或者是有一些你意想不到情况,我们导致这个数据重复过来了,但重复过来以后呢,如果是你是往site里面写的话,那就比较好,因为你写多次,其实我只会给你保留一次相同的数据,但如果你要写list,那问题就比较大。
16:18
相同的数据写过来以后呢,我会都给你保留下来,那都保留下来以后呢,我这个将来的order info1关联,是不是都能够关联成功的呀,对吧,那这个结果也就不对了啊说这个set会比较好,因为它有个去重功能啊好,那这一分析我就知道了,我要用set了,好,那set有了以后,那接下来我们的key用什么呀。Key有点简单了吧,把这个拿过来改一改,因为你是all detail,所以我要改成什么all detail后面写什么东西啊?同学们,后面你可不能写你order detail的ID啊,因为你的每一条这个detail的ID都不一样,你要写的是你是属于哪个order in for对不对啊?所以你要写的是这个order的ID啊,对吧,你要写的是这个订单的ID。
17:03
好,那value的话就是一个all detail的一个什么呀,集合啊all detail。这个就多个战神吧,好吧,就多个战神啊,战神多个再神啊。是不是啊,多个摘啊行,那这个写入用什么写入,那就SI的呗,读取的话,将来我要一读就都读出来,叫s members对吧,是否过期了一样的啊,24个小时对不对,24小时好,那你看我这不就分析明白了吗?对吧,那你这个分析明白以后呢,那你看一下我这个地方,我就可以写代码了啊怎么写呢?你看了啊,我读缓存的时候怎么读吧,那首先我是不是现在找到你这个K啊同学们这个K来我们拼接一下V,我们叫red的叫all detail的一个key,好它应该叫这个。OK,但是从我这个order info这个角度来讲的话呢,那我就得知道你的这个ID的话呢,我应该写的还是我自己的ID。
18:00
对吧,叫order info的ID啊,我得括起来啊。是不是从你的order info的角度来讲的话呢,那我就知道你你将来存的时候呢,你用的是order的ID,那我这个地方order info不就是它的ID吗?对吧?好,接下来是什么点get啊,不不get啊,As members,然后呢,把这个red的什么all the detailed key搁进去,然后呢,返回的是一个集合,这个叫做order t丝啊,那要判断啊,如果说你的order detail丝是不等于空的,就说白了你是由这个缓存的,并且呢,你的order detail丝的长度是什么大于零的,就说白了我确实是有。对吧,那么这种情况下我就又可以去组合了啊,怎么组合呢?那我就可以,呃,把你的这个奥德迪特尔斯作为一个迭代,呃,完了,这又是个Java的是吧,那我这样去做啊。好,Collection点这个Java点下划线啊,行来走一下啊,那就是这么去做all details讲as scale讲for啊做一个迭代,这个迭代出来以后呢,应该是一个order detail的一个摘啊是吧,那接下来干嘛呢?就是通过我们的战胜点pass object。
19:27
好,把你的这个order detail的一个摘。然后呢,呃,把它这个取出来啊,然后呢,把它转成一个class off,转成这个out detail,好,这是我的out detail,那你每拿到一个这个order detail,我就会这么组装了啊,就组装成什么呀,组装成order wide对吧?怎么组装呢?用上一个order wide,然后呢,把你的order info扔进去,把你的order detail扔进去。好,这是我的一个order,然后呢,我们叫加入到结果集中啊,加入到结果集中好怎么加进去呢?那就是order。
20:07
加openend,好把你的这个加进去。对吧,这就相当于什么,相当于诶我的这个这个order ID呃叫order info在我的缓存中呢,找到了,找到以后那我就关联成功了,就相当于把你这个错位的啊,把你上个批次中的跟我当前批次的数据呢,做了一个关联操作,错位就匹配上了。理解吧,这是一个抽匹配啊,OK,行,这就是我们的,呃,Order in for,它的一个什么读和写。理解吧,好行,那我们就写完了啊,停一下。
我来说两句