Spring如何配置数据库查询缓存对象缓存EHCache

Spring如何配置数据库查询缓存对象缓存EHCache,第1张

在ehcache.xml文件中配置查询缓存参数,ehcache.xml文件配置如下:

<ehcache>

   

    <!-- diskStore元素,配置一个目录,这个目录用来存放数据,

    也就是说,如果EhCache需要把数据写入磁盘,将会写到这个目录下 -->

    <diskStore path="java.io.tmpdir"/>

    <defaultCache

        maxElementsInMemory="10000"

        eternal="false"

        overflowToDisk="true"

        timeToIdleSeconds="120"

        timeToLiveSeconds="120"

        diskPersistent="false"

        diskExpiryThreadIntervalSeconds="120"/>

        

        <cache name="ehcacheName"

        maxElementsInMemory="3000"

        eternal="false"

        timeToIdleSeconds="3600"

        timeToLiveSeconds="36000"

        overflowToDisk="true"

        />

</ehcache>

2. spring的配置

第一步:给指定方法配置缓存/src/main/resources/applicationContext-resources.xml

<ehcache:proxy id="userGroupServiceProxy" refId="userGroupService" >

   <ehcache:caching cacheName="cash15Min"  methodName="selectuserGroupWithDetailByMemberId" />

   <ehcache:caching cacheName="cash15Min"  methodName="selectuserGroupWithDetailByGroupId" />

   <ehcache:caching cacheName="cash15Min"  methodName="selectuserGroupById" />

</ehcache:proxy>

配置参数的含义如下:

id:唯一标识符

refId:需要配置缓存的service或者controller

cacheName:缓存名称

methodName:需要缓存的方法,这个方法必须是shoppingHomeService中的方法

第二步:在控制器中注入依赖的缓存userGroupServiceProxy /src/main/webapp/WEB-INF/dispatcher-servlet.xml

<bean id="PFController" class="com.java.mall.controller.PFController">

        <property name="userService" ref="userService"></property>

        <property name="userGroupService" ref="userGroupServiceProxy"></property>

</bean>

同时需要在实体类中注入依赖,提供setter方法,

private userGroupService userGroupService

public void setuserGroupService(userGroupService userGroupService) {

    this.userGroupService = userGroupService

日志缓冲区Log_buffer是Oracle专门用于存入重做日志的内存区域。

数据库启动时,可以看到:

SQL>startup

ORACLE 例程已经启动。

Total System Global Area 85006980 bytes

Fixed Size 453252 bytes

Variable Size 46137344 bytes

Database Buffers 37748736 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

数据库已经打开。

Redo Buffers就是分配给Log_buffer的内存大小

对日志缓冲区的大小,可以从下面的视图中查询的到:

SQL>select * from v$parameter

也可以

SQL>show parameter log_buffer

NAME TYPEVALUE

------------------------------------ ----------- ------------------------------

log_buffer integer 524288

从这儿查询出的数据,是在配置文件中配置的数据,配置文件有:SPFILEORA92.ORA,INITora92.ORA等。

这个值和真实的日志缓冲区的大小不同。如果要知道真实的Log_buffer的大小,可以用下面的方法查询:

SQL>select * from v$sgastat where name ='log_buffer'

POOLNAMEBYTES

------------------------------------- ----------

log_buffer 656384

上面的这个值,是Oracle的SGA实际分配给Log_buffer的大小。

另外,还可以从 v$sga中查询:

SQL>select * from v$sga

NAME VALUE

-------------------- ----------

Fixed Size 453252

Variable Size 46137344

Database Buffers 37748736

Redo Buffers 667648

这个值也就是Oracle启动时分配给Log_buffer的大小。

那这个值为什么和实际的大小有差别呢?

SQL>select (667648-656384)/1024 ||'K' from dual

(66

---

11K

相差11K,那这11K干什么用呢?

这11K是Oracle为了保护Log_buffer,分配出来的日志保护页。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9931216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存