00:00
我们一起来学习一下har的二级缓存,首先通过代码来看一下这个二级缓存会起到一个什么作用。写一个测试方法。Second。我获取100号员工的信息。一下。复制下来再获取一遍。打印一下。
01:00
那我的问题是,在我们这个测试方法里面,一共是获取了两次100号员工的信息。那一共会向数据库发送几条SQL语句呢?几条?应该是。跑下先瞧瞧。是不是只发了一条口语卷啊?为什么呀,因为session是不是有一个缓存啊,在我们第一次把100号员工信息获取完之后的话呢,这个员工会放到。赛程缓存里面。那你下一次再获取的话,他先看30缓存里面是不是有,如果要是有的话,直接返回,而不用像数据库再发一次SQL语句,所以说的话呢,嗯,只有一条SQ语句,然后打了两次。这个我们在前面已经研究过了,现在的话呢,我们来看这样的一行代码。我们看哈,目前这个流程呢,先执行的in啊。
02:00
开了一个新的session,然后开启的事务,然后提交事务,关闭session,现在我这样。我在。59行到60行提交事务,关闭session,然后呢,我再获取一个新的session,再开启事务。大家看到了吧,我要这样一写的话呢,这个意思就是说。我在执行这个方法的时候,一共是有两个塞身对吧,我第一次给他获取完,然后把这个三身关了,三身关的话,缓存的数据没有了吧,都关闭了呀,开了一个新的三身,又获取了100号员工的这个信息,这个时候会发送四口语句吗?走。看是不是发送了呀。因为我是两个session,那你第一次那个session缓存不就过期了吗?对吧,所以说这个时候发了两条思考语句,当然了也打了两个K。
03:06
那我们二期可能要办的就是我如果把这个塞身关闭了,我开一个新的塞身,我能够保证这块。也是发送一条思考语句,这就是C,呃,Havet,二级缓存要帮我们做的工作。OK。具体来看一下,一会儿的话呢,我们通过配置就可以达到这样的效果。首先我们来说一下缓存,缓存呢是介于应用程序跟永久数据存储源之间。其作用是降低应用程序直接读写永久数据源的频率,从而提高应用的运行性能。缓存的物理介质常常是内存。应用程序读内存的数据是不是比读硬盘的数据要快啊?缓存就是干这个事。他那T里边有两个级别的缓存,第一个级别的我们也称之为一级缓存,就是session那个缓存,它属于事务范围内的,第一级别的由harm姆net来管理,这个的话呢,我们在前面已经重点的研究过了。
04:17
第二级别的是三级别的。他属于。进程范围内的缓存。我们来看一下session factory级别的缓存。session factory级别的缓存又可以分为两类,一个叫内置的,一个叫外置的。内置的A自带的不可拆卸的。这harmonlet应用程序初始化的时候,Harmon会把映射元数据跟预定义的circle口放到session factory这个内置缓存里边。那。什么叫映射元数据啊?实际上就是映射文件点HBMXL中的数据。
05:00
这个内酯混存是只毒的。什么意思嘞。就是在我创建这个session factory对象的时候。我会来读取这个配置文件,这个配置文件里边有连接harm,有连接数据库的一些基本信息,是不是还有一个一个的映射文件啊,它把这个映射文件读到内存里面,而且呢,会先生成一些预定义好的SQL语句。那这个映射信息以及预定义好的SQ语句就放到session factory那个缓存里边。这就是我们所谓的叫内置缓存,自带的不可拆卸,哎,Session factory还有一个外置缓存,这个的话呢,是我们所谓的这个harmlet的二级缓存,它是一个可配置的缓存插件。就是说我们刚才写这个程序里边是吧,我们要是使用这个二级缓存的话,我们就会看到只去发送一条SQL语句。
06:03
可配置的缓存插件,默认情况下他不会启用这个缓存插件。外置缓存中的数据是数据库数据的复制。外置缓存的物理介质可以是内存,也可以是硬盘,你说老师你刚才不就说是内存吗?怎么又搞了一个硬盘呢?如果缓存的数据要是特别大的话,我为了防止它占用更多的内存资源,这个时候我或许就会把那个缓存的数据放到硬盘上。那哪些数据适合放到这个二级缓存里边呢?比如说有一些适合放有一些。不适合放哪些适合放啊啊很少被修改的,总是被查询的放到二级缓存里边,因为我缓存的是查询的数据,如果你这个数据要是经常改的话,放到二级缓存里边意义就不大了。
07:00
第二个不是很重要的,允许偶尔出现并发问题的。因为你是一个缓存,所以说这里边儿这个数据啊,有可能就不是最新的。这个时候的话呢,就或许会有。并发的问题。这样的数据呢,可以放到这个二级缓存里面,不是何方的经常被修改的。跟钱相关的财务数据,钱是不能出问题的,对吧,这样的数据不适合放到这个二级缓存里边。还有与其他营育成以。其他应用程序共享的数据。就是说其他应用程序啊,需要来读取我当前应用程序这个数据,然后以运行它那个程序,这个时候那个数据不对的话,整个后面的运行结果都是错误的,像这样的三种数据不适合放到。二级缓存里面。下面我们来看一下HAMLET2级缓存的架构。
08:06
最上边那个这个是一级缓存。这个我们在前面已经研究过了啊,这个就是二级缓存,二级缓存我们需要提供一个缓存策略啊,当然还有一个查询缓存,那如何实现呢?哎,我们需要这样的一个物理实现,具体首先我们需要提供一个。缓存的提供者。什么意思啊,Ha自身并没有实现这个二级缓存,它需要一个第三方的插件。比方说eh k OS k这样的插件来实实现HARMONT2级缓存,所以说你先就要搞个它。然后有一个,嗯。类级别的缓存区域,集合级别的缓存区域,查询缓存的缓存区域,还有一个更新时间戳缓存。
09:00
我们下边会一一的进行研究。我们先来看一下二级缓存的并发策略吧。我们看到这个并发策略的话,你会想到什么呀?是不是会想到数据库的隔离级别呀?是吧,并发嘛,实际上哈姆let提供了四种类型的并发策略。每一种。并发访问策略对应着一种数据库的隔离级别。那其中有一种叫读写型,它提供了read committed数据的隔离级别,叫读已提交,那我们推荐使用这样的这个。嗯。访问策略。叫readrite,那其他几个的话呢,我们不再一个一个说了哈,他们跟。数据库那个数据库那四个隔离级别是一一对应的。比方说第一个叫。
10:00
读未提交第二个叫读已提交,第三个叫。可重复读,最后一个叫序列化,我们在做这个数据库隔离级别的时候,我们不也是推荐使用读已提交这个隔离级别吗?再来看一看。缓存的提供者。二级缓存是一个可配置的插件,Harm允许使用以下类存以下类型的混轮插件啊,Eh hh o schh。Swarm catch及boss catch。四准缓冲插件支持的并发访问策略,这个叉代表支持,空白代表不支持,我们看前两个支持的多吧,是吧,EK跟OOSK他们支持这个red right,所以说呢,我们可以选用上两个,我们这里面使用这个eh k为例来做这个harmon的二级缓存。下边的话呢,就是具体的步骤了哈。
11:03
实现一下。具体步骤,首先我们需要加入eh开的价包跟配置文件。一盘。Java open source。4.2.4。力不。Option。也是catch加包三个。压到内镜下。第二步,加入E开对应的配置文件。Project ETC。你来。
12:01
打开暂时呢,我们先使用默认的配置,一会儿我来讲每一个配置项都是什么意思。然后找到harm配置文件。我们首先说我要启用二级换。Edge。使用二级缓存处。配置使用的二级缓存的产品。参考一下。I'm the properties。CTRLF,我们直接找eh hh。
13:00
这我们怎么写的呀?这个属地名叫他。CTRLC过来。Property。这个呢叫属性值。光有这两个配置还不够。我们还需要配。对哪个类启用二级缓存白屏下边给来配一个。Class。策略,Rewrite。哪位呢?对这个employee使用。C。好了,我们再找。这个时候看看一看,是不是就打一条色扣了呢。找一个。
14:00
出了个错,什么错啊?Can cause by。说没找着。It catch这个factory。没找着这个eh catch factory,哎,我这个不是从文件里边复制的吗。我复制的是吧,那复制的也不对。我们去找一下正确的吧。应该叫啥呢?首先。找到harmon eh k这个价包。第一个打开我们看是不是有一个叫eh with factory啊,不在一个包下。把这个复制一下。Control c。
15:04
可以快跑。好了,过了,大家看这个时候怎么样。是不是只访问了一遍数据库啊?我把这个呢注掉。看见立竿见影的不一样。带走。两次吧,哎,我们这个二级缓存就。起作用。有一个笔记。Not txt。使用。ALBERNET2级缓存的。步骤。一步。
16:00
加入二级缓存。哈件儿的。大包及配置文件我们怎么加呢?我们是。复制了一组大包。Lib optional。It catch,把这个加到类路径下。To see。一。布置这个下的星点价。当前。Hyber应用的类路。定价。第二步。
17:02
配置文件。配置文件呢,我们现在用的是。默认的这个下边。的eh k xml。复制被下的。Eh XL。当前web应用的类。第五下。第二个步骤就要来配置。Hat。CF。X秒这里边呢,一共是有三个步骤。
18:01
哪三个步骤啊,第一个步骤配置启用他的二级缓存。第二个配置。二级缓存使用的产品。第三个配置对哪些?被使用harm的二级缓存。一个是一个。Property。这。第二个。对。这个呢,需要注意的是properties提供的那个类啊。
19:03
不对哈,应该这个学名应该是他大家需要注意一下。第三个被对哪些类使用二级缓存?他。这块的话呢,我们要说一下,实际上。也可以在点H d.XL文件中位置。对,哪些?为使用二级缓存急。二级缓存的策略是什么?就是说我可以把这个助教。我可以上那个eh。
20:01
上employee那个HM文件里边去配置这个里边。打开。看一下,嘿。看见了吧。Bad一样的。我先。CTRLX拿掉,这个时候呢。他们那个里边也没配。知道了吗?是吧。这个里边也没有,所以说应该是不起作用的。两次射口。有Z加上了桥。OK,没问题。那以上的话呢,我们可以作为harm net2级缓存的一个hello word。下边我们会详细来讲啊,E ke查询缓存。集合缓存、时间托缓存以及跟缓存对应的一个方法。
21:02
下节再说。
我来说两句