zoukankan      html  css  js  c++  java
  • mybatis0210 mybatis和ehcache缓存框架整合

    1.1mybatis和ehcache缓存框架整合
    一般不用mybatis来管理缓存而是用其他缓存框架在管理缓存,因为其他缓存框架管理缓存会更加高效,因为别人专业做缓存的而mybatis专业做sql语句的,mybatis二级缓存通过ehcache维护缓存数据。
    1.1.1分布缓存
    将缓存数据数据进行分布式管理。用户发起请求,首先会根据负载选择不同的服务器,如果用户在服务器1和服务器2都登录过,那么把用户的session分别放在服务器1和服务器2是不行的,所以就把用户的信息放在远程服务器集群中统一管理。如果用mybatis的缓存,那么mybatis的缓存将会是分别在服务器1和服务器2,不能实现缓存的统一管理。

    1.1.1mybatis和ehcache思路
    通过mybatis和ehcache框架进行整合,就可以把缓存数据的管理托管给ehcache。
    在mybatis中提供了一个cache接口,只要实现cache接口就可以把缓存数据灵活的管理起来。(源码如下)

    mybatis中默认实现:(源码如下)

    1.1.1下载和ehcache整合的jar包

    Ehcache要扩展mybatis的缓存管理就要实现cache接口:(源码如下)

    1.1.1配置ehcache.xml

    1.1.1整合测试
    (整合:导入jar包,写ehcache.xml)在mapper.xml添加ehcache配置:
    <!-- 开启二级缓存 -->
         <!-- 单位:毫秒 -->
         <cache type="org.mybatis.caches.ehcache.EhcacheCache"> <!-- 二级缓存的类型是ehcache的实现类,不写类型默认就是mybatis的缓存, -->
             <property name="timeToIdleSeconds" value="12000"/>
            <property name="timeToLiveSeconds" value="3600"/>
            <!-- 同ehcache参数maxElementsInMemory -->
            <property name="maxEntriesLocalHeap" value="1000"/>
            <!-- 同ehcache参数maxElementsOnDisk -->
            <property name="maxEntriesLocalDisk" value="10000000"/>
            <property name="memoryStoreEvictionPolicy" value="LRU"/>
         </cache>
    1.2二级缓存的应用场景
    对查询频率高,变化频率低的数据建议使用二级缓存。
        对于访问多的查询请求且用户对查询结果实时性要求不高,此时可采用mybatis二级缓存技术降低数据库访问量,提高访问速度,业务场景比如:耗时较高的统计分析sql、电话账单查询sql等。
        实现方法如下:通过设置刷新间隔时间,由mybatis每隔一段时间自动清空缓存,根据数据变化频率设置缓存刷新间隔flushInterval,比如设置为30分钟、60分钟、24小时等,根据需求而定。
    1.3mybatis局限性
        mybatis二级缓存对细粒度的数据级别的缓存实现不好,比如如下需求:对商品信息进行缓存,由于商品信息查询访问量大,但是要求用户每次都能查询最新的商品信息,此时如果使用mybatis的二级缓存就无法实现当一个商品变化时只刷新该商品的缓存信息而不刷新其它商品的信息,因为mybaits的二级缓存区域以mapper为单位划分,当一个商品信息变化会将所有商品信息的缓存数据全部清空。解决此类问题需要在业务层根据需求对数据有针对性缓存。
  • 相关阅读:
    POSTGRESQL 批量权限 管理方法
    centos7安装rabbitmq
    centos7使用cron任务的相关命令(与centos6有区别)
    crontab定时执行shell脚本
    使用kong-dashboard
    Kong组件构成及使用
    Docker基本操作命令
    微服务写的最全的一篇文章
    centos7安装kong和kong-dashboard
    sql练习03
  • 原文地址:https://www.cnblogs.com/yaowen/p/5203642.html
Copyright © 2011-2022 走看看