一级缓存,二级缓存

简介: 一级缓存:                 是在SqlSession事务中产生缓存机制                 缓存查询中的数据、select、还可以对参数不同进行缓存机制                 commit或者rollback就会清楚缓存                 clearCache()  清除缓存                 update,insert,delete 缓存都会清理,重新积累     缓存的目的:                 降低数据库的访问量,数据库压力不会那么大。
一级缓存:
                 是在SqlSession事务中产生缓存机制
                 缓存查询中的数据、select、还可以对参数不同进行缓存机制
                 commit或者rollback就会清楚缓存
                 clearCache()  清除缓存
                 update,insert,delete 缓存都会清理,重新积累     
缓存的目的:
                 降低数据库的访问量,数据库压力不会那么大。
                 缓存一种优化方案。
集群:
       多服务器
       主从数据库,一个负责读一个负责写等。
       数据互相进行同步,通常是读的多写的少,所以可一添加多个读取服务。
       读之所以比较慢是因为他需要进行数据运算

一级缓存作用域比较窄他只作用与:
      一个SqlSession中,在一级缓存中查询,除了第一次加载数据库,在查询就会从内存中查询。
      将查询过的放入内存,如果再用的话直接从内存中拿就行,只要查询就会缓存在内存,无论数量。
      但是只要执行更新语句就会打破一级缓存,不确定你的更新是否会影响的查询(不确定数据的唯一性)
      事务提交缓存也会清除
   



二级缓存:
               1.在mybatis-config.xml中 设置二级缓存开关 true
               2.如何让你的select参与二级缓存? 在的mapper.xml写上 <cache>
               3.参与缓存,需要把你POJO类 实现序列化接口,以后可能会写入硬盘
               本身mybatis中也含有二级缓存组件
ehcache:
               1.mapper.xml写上 <cache type="org.mybatis.caches.ehcache.EhcacheCache">
               2.加入ehcachejia包:
                                                1.mybatis-ehcache.jar
                                                2.ehcache的实现jar
              3.可以在你的源码根目录下 创建ehcache.xml缓存配置
二级缓存:
              事务关闭他也会有缓存效果除非,发生更新、commit或者rollback就会清楚缓存
                二级缓存是全局缓存
               需要打开二级缓存,首先要在连接xml文件中,设置一个标记(settings)
                       96e83e1c3d98aaf8d0f4ef85d106a14f74afb74e
           二级缓存不一定在内存中,有可能写硬盘当中,需要实现一个序列化接口,没有序列化就不允许保存在磁盘当中

public class Stu implements Serializable {
    //需要实现一个Serializable接口数据可以保存在磁盘中

}

需要在你的映射文件中添加一个缓存标记
                                    9e80faae152d2b0b51dc655f439dc5be05da2530
二级缓存默认是开启状态

EhcacheCache缓存:
                                首先要在映射文件中指定缓存类型
                                 92fe4ae1d048df8c5fab52d1e0ac15a097168846
                                eh缓存在源码包下配置一个xml文件
                               
<ehcache>
    <!--<diskStore path="d:\\tempDirectory"/>-->
    <!--
        name: 设置缓存的名字,它的取值为类的全限定名或类的集合的名字
        maxElementsInMemory: 设置基于内存的缓存中可存放的对象最大数目
        eternal: 设置对象是否为永久的, true表示永不过期, 此时将忽略timeToIdleSeconds 和 timeToLiveSeconds属性; 默认值是false
       timeToIdleSeconds:设置对象空闲最长时间,以秒为单位, 超过这个时间,对象过期。当对象过期时,EHCache会把它从缓存中清除。如果此值为0,表示对象可以无限期地                  处于空闲状态。
        timeToLiveSeconds:设置对象生存最长时间,超过这个时间,对象过期。如果此值为0,表示对象可以无限期地存在于缓存中.
                该属性值必须大于或等于 timeToIdleSeconds 属性值
        overflowToDisk:设置基于内存的缓存中的对象数目达到上限后,是否把溢出的对象写到基于硬盘的缓存中
    -->
    <defaultCache
            maxElementsInMemory="1000000000"
            eternal="false"
            timeToIdleSeconds="30"
            timeToLiveSeconds="40"
            overflowToDisk="false"
    />
</ehcache>


目录
相关文章
|
4月前
|
SQL 缓存 Java
如何判断mybatis 开启二级缓存 和二级缓存详细讲解
如何判断mybatis 开启二级缓存 和二级缓存详细讲解
50 0
|
8月前
|
SQL 存储 缓存
Mybatis的一级缓存,二级缓存过期时间分析
Mybatis的一级缓存,二级缓存过期时间分析
323 0
|
5天前
|
XML 缓存 Java
MyBatis二级缓存解密:深入探究缓存机制与应用场景
MyBatis二级缓存解密:深入探究缓存机制与应用场景
26 2
MyBatis二级缓存解密:深入探究缓存机制与应用场景
|
8月前
|
存储 SQL 缓存
MyBatis一级缓存 二级缓存
MyBatis一级缓存 二级缓存
65 0
|
4月前
|
缓存 Java 数据库连接
Mybatis中一级缓存和二级缓存使用详解
Mybatis中一级缓存和二级缓存使用详解
58 0
|
6月前
|
缓存 Java 数据库连接
mybatis之一级缓存和二级缓存~
mybatis之一级缓存和二级缓存~
|
7月前
|
缓存 Java 数据库连接
MyBatis 的一级缓存和二级缓存
MyBatis 的一级缓存和二级缓存
150 0
|
7月前
|
存储 缓存 Java
Spring为何需要三级缓存解决循环依赖,而不是二级缓存?
今天给大家分享一道大厂面试真题,Spring为何需要三级缓存解决循环依赖,而不是二级缓存?我一共分为五个部分来给大家介绍: 1、什么是循环依赖? 循环依赖就是指循环引用,是两个或多个Bean相互之间的持有对方的引用。在代码中,如果将两个或多个Bean互相之间持有对方的引用,因为Spring中加入了依赖注入机制,也就是自动给属性赋值。Spring给属性赋值时,将会导致死循环。那么,哪些情况会出现循环依赖呢?
151 0
|
8月前
|
SQL XML 缓存
mybatis的一级缓存和二级缓存
mybatis的一级缓存和二级缓存
88 0
|
8月前
|
缓存 Java 数据库连接
提高检索效率的利器--Mybatis 的一级缓存和二级缓存执行顺序
提高检索效率的利器--Mybatis 的一级缓存和二级缓存执行顺序
67 0

热门文章

最新文章