Mybatis框架——缓存(一级缓存,二级缓存)

本章将简单介绍Mybatis框架中的缓存,欢迎大家点赞➕收藏,蟹蟹!!!💕

🌈个人主页:404_NOT_FOUND@

🌈MyBatis环境搭建步骤(超全解析!!!)👇Mybatis框架------MyBatis初学(!!!MyBatis 环境搭建步骤)

🌈mybatis框架笔记专栏:MyBatis框架

目录

1.缓存是什么?

2.为什么使用缓存?

3.哪些数据适合放在缓存中?

4.访问量大会导致的问题

5.一级缓存

[5.1 一级缓存概述](#5.1 一级缓存概述)

[5.2 一级缓存失败的情况总结](#5.2 一级缓存失败的情况总结)

6.二级缓存

[6.1 二级缓存概述](#6.1 二级缓存概述)

[6.2 二级缓存配置](#6.2 二级缓存配置)


1.缓存是什么?

将数据临时存储在内存中,需要时直接从内存中获取

2.为什么使用缓存?

++✍️缓存的作用++
是 为了减去数据库的压力,提高查询性能
++✍️缓存实现的原理++
从数据库中查询出来的对象在使用完后不要销毁,而是存储在内存(缓存)中,当再次需要获取该对象时,直接从内存(缓存)中直接获取,不再向数据库执行 select 语句,从而减少了对数据库的查询次数, 减轻数据库压力,因此 提高了数据库的性能

3.哪些数据适合放在缓存中?

  • 修改较少的
  • 访问量巨大的(秒杀,抢购)短时间内访问量非常大的
  • 结构简单的数据,例如新闻点赞,也是操作频繁的

4.访问量大会导致的问题

  • mysql要处理大量连接请求
  • 从硬盘上读取速度相对慢

mybatis框架也是提供了缓存功能

5.一级缓存

5.1 一级缓存概述

是sqlsession级别的,在同一个sqlsession中相同的两次以上查询,只查询数据库一次*,*第一查询的数据存储在sqlsession对象中,第二次直接从sqlsession中获取即可

​​​​

But!!!也会存在一级缓存失败的情况,比如当第二次进行查询操作之前,进行其他操作,比如++删除、修改、修改操作后就会清除一级缓存++ ,这样就会进行两次查询

**Or!!!在两次连续查询之间进行++强制清空一级缓存++**操作

Or!!!在一次查询之后++进行关闭连接对象操作++ 也会清空一级缓存sqlSession .close();

5.2 一级缓存失败的情况总结

  • 执行增删改操作后当前一级缓存会清空
  • sqlSession.clearCache();强制清空一级缓存
  • sqlSession.close(); 关闭连接对象清空一级缓存

6.二级缓存

6.1 二级缓存概述

二级缓存是SqlSessionFactory 级别的(SqlSessionFactory对象只有一个,创建后就不关闭了,多个sqlSession共享一个SqlSessionFactory)
**But!!!**二级缓存使用时要配置的

6.2 二级缓存配置

++第一步:++启用二级缓存在 mabatis.xml 中启用二级缓存,如下代码所示,当 cacheEnabled 设置为 true 时启用二级缓存,设置为 false 时禁用二级缓存
<setting name="cacheEnabled" value="true"/>

++第二步:++对象序列化 让封装数据的类实现序列化接口

Java.io. Serializable

++第三步:++ 配置映射文件 在 Mapper 映射文件中添加<cache />,表示此 mapper 开启二级缓存,当 SqlSeesion 关闭时,会将数据存入到二级缓存

设置二级缓存配置:
size="" 缓存对象数量
flushInterval="" 设置二级缓存的有效时间 毫秒为单位
eviction="FIFO" 配置到期后的淘汰策略
readOnly="true" 设置缓存数据只读

在配置好后进行测试可以看到,在**++进行关闭连接对象操作后++** 二级缓存只查询了数据库一次

💫 Last!!!

🙏大家看完不要忘了三连哦

相关推荐
生命几十年3万天2 小时前
redis时间优化
数据库·redis·缓存
paopaokaka_luck3 小时前
基于Spring Boot+Vue的助农销售平台(协同过滤算法、限流算法、支付宝沙盒支付、实时聊天、图形化分析)
java·spring boot·小程序·毕业设计·mybatis·1024程序员节
cooldream20094 小时前
Spring Boot中集成MyBatis操作数据库详细教程
java·数据库·spring boot·mybatis
java知路4 小时前
springboot 基于google 缓存,实现防重复提交
spring boot·后端·缓存
不像程序员的程序媛5 小时前
mybatisgenerator生成mapper时报错
maven·mybatis
_.Switch6 小时前
Serverless架构与自动化运维
运维·python·缓存·自动化·运维开发
元气满满的热码式7 小时前
Redis常用的五大数据类型(列表List,集合set)
数据库·redis·缓存
小布布的不7 小时前
MyBatis 返回 Map 或 List<Map>时,时间类型数据,默认为LocalDateTime,响应给前端默认含有‘T‘字符
前端·mybatis·springboot
学习路漫长9 小时前
Redis 的使⽤和原理
redis·缓存
-273K9 小时前
33.Redis多线程
数据库·redis·缓存