Mybatis一级缓存,二级缓存配置使用以及注意事项

1. 一级缓存

存储作用域为Session(指的是SQLSession,mapper里面的单个的查询),生命周期最长一次请求结束,当Session flush 或close 之后,该Session 中的所有Cache 就将清空, 默认打开一级缓存。
我觉得一级缓存没什么用,因为生命周期太短。而且在我目前用过的场景里,没有触发过

2. Mybatis二级缓存

二级缓存的作用域是Mapper(namespace)生命周期最长和应用(application)一样长(在没有update,insert,delete语句的情况下)。同一个mapper下的所有语句共享。当当前mapper下有语句执行了update,insert,delete操作,缓存会被清除

二级缓存用的最多的常见其实是重复请求,我第二次请求还能直接获取第一次请求的结果,而不用连接数据库。能够有效减少数据库压力。

我觉得二级缓存是一个很有效的手段。对于一些查询量高。而且请求重复的网站能够有很好的效果。

3. 二级缓存的使用

使用起来其实比较简单。
直接添加在<mapper下面一行,添加如下语句,就是开启了二级缓存

<!--缓存 采用先进先出的方式,每60S刷新一次,最多存储128个引用,缓存只读 -->
<cache eviction="FIFO" flushInterval="60000" size="128" readOnly="true"/>

好了。就这么简单就可以了

4. 二级缓存的适用场景

我在网上看到一篇文章,但是我非常不喜欢这个标题(我写这篇博客的主要目的就是表达:我非常不喜欢标题党)。但是里面的知识点挺好
Mybatis 为什么不要用二级缓存
还有很多类似的文章:为什么推荐使用二级缓存,
我看着非常不舒服。二级缓存是有其适用场景的。但是这个标题取着就给人一种使用二级缓存不好一样。让我很不舒服。

我们根据二级缓存的特征***作用域是Mapper(namespace)生命周期最长和应用(application)一样长(在没有update,insert,delete语句的情况下)。同一个mapper下的所有语句共享。当当前mapper下有语句执行了update,insert,delete操作,缓存会被清除***
适用场景:
查询语句使用频率远远高于insert,update,delete语句
这个mapper都是操作一个表(也就是适合单表操作)

我当前有个业务场景就是有张SeoHot表。个把个把月才更新一次。而且表中字段很少。是非常适合使用二级缓存来优化的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值