Mybatis二级缓存设计说明-创新互联

只针对框架支持 Mybatis 二级缓存的设计进行说明,想深入了解 Mybatis 缓存原 理请阅读 Mybatis 缓存详细设计文档 1. Mybatis 缓存概要说明 一级缓存: 只是相对于同一个 SqlSession 而言。所以在参数和 SQL 完全一样的情 况下,我们使用同一个 SqlSession 对象调用一个 Mapper 方法,往往只执行一次 SQL 因为使用 SqlSession 第一次查询后,MyBatis 会将其放在缓存中,以后再查询 的时候,如果没有声明需要刷新,并且缓存没有超时的情况下,SqlSession 都会取 出当前缓存的数据,而不会再次发送 SQL 到数据库,在没有配置的情况下, Mybatis 默认开启一级缓存。 二级缓存:Application 级别的缓存,它可以提高对数据库查询的效率,以提高应用 的性能。SqlSessionFactory 层面上的二级缓存默认是不开启的,二级缓存的开启需 要进行配置,实现二级缓存的时候,MyBatis 要求返回的 POJO 必须是可序列化的。 也就是要求实现 Serializable 接口,配置方法很简单,只需要在映射的 XML 文件配 置就可以开启缓存了。 分布式二级缓存:假设现在有两个服务器 1 和 2,用户访问的时候访问了 1 服务器, 查询后的缓存就会放在 1 服务器上,假设现在有个用户访问的是 2 服务器,那么他 在 2 服务器上就无法获取刚刚那个缓存,为了解決这个问题,就得找一个分布式的 缓存,专门用来存储缓存数据的,这样不同的服务器要缓存数据都往它那里存,取 缓存数据也从它那里取。 2. 后端开发框架二级缓存使用说明 1) Spring Boot 项目如果需要打开 Mybatis 二级缓存,需要在配置文件中增加配 置项:mybatis.configuration.cache-enabled=true 2) 缓存策略配置:配置文件中设置缓存大容量 mybatis.cache.max-size=xxx 默 认值为 512,存活时间 mybatis.cache.ttl=xxx 默认值 86400 秒 3) 在需要启用缓存的主 mapper.xml 文件里增加 MybatisRedisCache 类为框架提供的基于 redis 分布式缓存设计的 Cache 4) 如果同一个 namespace 下有多个 mapper 文件,增加的文件需要增加 如果没有配置 flushCache、useCache,那么默认是启用缓存的。 fushCache 默认为 false,表示任何时候语句被调用,都不会去清空本地缓存和 二级缓存。 useCache 默认为 true,表示会将本条语句的结果进行二级缓存。 在 insert、update、delete 语句时:flushCache 默认为 true,表示任何时候语 句被调用,都会导致本地缓存和二级缓存被清空。useCache 属性在该情况下 没有。update 的时候如果 flushCache="false”,则当你更新后,查询的数据还 是老的数据。 6) 代码生成器生成的 select 语句默认 useCache="false"不启用二级缓存,在于查 询条件过于灵活,缓存命中率低,所以不建议缓存。一般建议启用二级缓存的 查询都在***Ex-mapper.xml 中定义,具有一定入参限制的查询。 3. 注意事项 1) 只能在【只有单表操作】的表上使用缓存 不只是要保证这个表在整个系统中只有单表操作,而且和该表有关的全部操作必须 全部在一个 namespace 下。 针对一个表的某些操作不在他独立的 namespace 下进行。例如在 UserMapper.xml 中有大多数针对 user 表的操作。但是在一个 xxxMapper.xml 中,还有针对 user 单 表 的 操 作 。 这 会 导 致 user 在 两 个 命 名 空 间 下 的 数 据 不 一 致 。 如 果 在 UserMapper.xml 中做了刷新缓存的操作,在 xxxMapper.xml 中缓存仍然有效,如果 有针对 user 的单表查询,使用缓存的结果可能会不正确。更危险的情况是在 xxxMapper.xml 做了 insert,update,delete 操作时,会导致 UserMapper.xml 中的各种 操作充满未知风险。有关这样单表的操作可能不常见。但是你也许想到了一种常见 的情况。多表操作一定不能使用缓存。 2) 在可以保证查询远远大于 insert,update,delete 操作的情况下使用缓存。

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

创新互联公司主营灌阳网站建设的网络公司,主营网站建设方案,成都app软件开发公司,灌阳h5小程序制作搭建,灌阳网站营销推广欢迎灌阳等地区企业咨询
分享文章:Mybatis二级缓存设计说明-创新互联
新闻来源:http://hbruida.cn/article/cohshj.html