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

news/2024/9/18 21:05:24/ 标签: mybatis, 缓存

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

 🌈个人主页:404_NOT_FOUND@

🌈MyBatis环境搭建步骤(超全解析!!!)👇Mybatis框架——MyBatis初学(!!!MyBatis 环境搭建步骤)
🌈mybatis框架笔记专栏:MyBatis框架

目录

1.缓存是什么?

2.为什么使用缓存

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

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

5.一级缓存

5.1 一级缓存概述

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

6.二级缓存 

6.1 二级缓存概述

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!!!

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


http://www.ppmy.cn/news/1518331.html

相关文章

网络安全 DVWA通关指南 DVWA File Upload(文件上传)

DVWA File Upload&#xff08;文件上传&#xff09; 文章目录 DVWA File Upload&#xff08;文件上传&#xff09;修复建议 LowMediumHighImpossible 修复建议 1、使用白名单限制可以上传的文件扩展名 2、注意0x00截断攻击&#xff08;PHP更新到最新版本&#xff09; 3、对上传…

关键字之sizeof

接下来我讲的是之前我提到过的C语言关键字 sizeof同时它也是C语言提供的操作符&#xff08;运算符&#xff09; 它的使用形式有两种 1 sizeof&#xff08;类型&#xff09; 2 sizeof 表达式 sizeof返回某种数据类型或某个值占用的字节数量&#xff0c;它的参数可以是数据类型…

怎样通过bs4找出程序中 标签<div class=“List2“>中所有的<li>的内容?

怎样通过bs4找出程序中 标签<div class"List2">中所有的<li>的内容&#xff1f; 可以使用 BeautifulSoup 的 find_all 方法来找到标签为 <div class"List2"> 中的所有 <li> 标签&#xff0c;并获取其内容。 以下是一个示例代码&…

【面试经验】美团基础研发部产品经理面试经验

3.12 投递 4.1 一面 4.11 二面 4.17 oc但拒 一面内容&#xff1a; 1、一个指数增长的脑经急转弯 2、对向量和向量值如何理解 ——类比函数&#xff0c;目的是映射和转化 3、transformer有没有看&#xff08;问到了注意力机制&#xff09; ——transformer的本质是一个编码…

http连接处理

分析http类及请求接收 基础 epoll epoll_create函数 #include <sys/epoll.h> int epoll_create(int size) 创建一个指示epoll内核事件表的文件描述符&#xff0c;该描述符将用作其他epoll系统调用的第一个参数&#xff0c;size不起作用。 epoll_ctl函数 #include …

基于Python的热门旅游景点数据分析系统【python-爬虫-大数据定制】

&#x1f496;&#x1f525;作者主页&#xff1a;毕设木哥 精彩专栏推荐订阅&#xff1a;在 下方专栏&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; 实战项目 文章目录 实战项目 一、基于Python的热门旅游景点数…

sheng的学习笔记-AI-半监督聚类

AI目录&#xff1a;sheng的学习笔记-AI目录-CSDN博客 半监督学习&#xff1a;sheng的学习笔记-AI-半监督学习-CSDN博客 聚类&#xff1a;sheng的学习笔记-AI-聚类(Clustering)-CSDN博客 均值算法&#xff1a;sheng的学习笔记-AI-K均值算法_k均值算法怎么算迭代两次后的最大…

论文阅读:VideoMamba: State Space Model for Efficient Video Understanding

论文地址&#xff1a;arxiv 摘要 为了解决视频理解中的局部冗余与全局依赖性的双重挑战。作者将 Mamba 模型应用于视频领域。所提出的 VideoMamba 克服了现有的 3D 卷积神经网络与视频 Transformer 的局限性。 经过广泛的评估提示了 VideoMamba 的能力&#xff1a; 在视觉领…

Zookeeper 日志输出到指定文件夹,并按照日期轮循输出

更改日志输出路径 如果不做修改&#xff0c;zookeeper的日志信息默认都打印到了zookeeper.out文件中&#xff0c;这样输出路径和大小没法控制&#xff0c;因为日志文件没有轮转。所以需要修改日志输出方式。具体操作如下&#xff1a; 1.修改${zkhome}/bin/zkEnv.sh ZOO_LOG_…

我的推荐:腾讯云罗云《从零构建向量数据库》

在2024年8月&#xff0c;好几本和数据库相关的图书相继出版&#xff0c;我以为&#xff0c;这恰恰是数据库领域蓬勃向上的一种表现。 数据库需要更多的人关注&#xff0c;哪怕是谈论&#xff0c;所以我的《数据库简史》是一种尝试&#xff0c;希望以一种科普的风格&#xff0c;…

信息安全数学基础(4)最大公因数

前言 在信息安全数学基础中&#xff0c;最大公因数&#xff08;Greatest Common Divisor, GCD&#xff09;是一个核心概念&#xff0c;它在密码学、数论等多个领域都有广泛应用。以下是对最大公因数的详细阐述&#xff1a; 一、定义 设a和b是两个非零整数&#xff0c;若整数d同…

框架 +【Mybatis】概述 以及 基础环境搭建

目录 什么是框架&#xff1f; java后端框架包括 Mybatis概述 1、背景介绍 2、mybatis介绍 Mybatis环境搭建 1.创建一个maven项目 2.导入mysql数据库驱动包 导入mybatis依赖的jar包 3.创建一个全局的mybatis配置文件 4.创建数据库,创建表,准备数据 5.创建一个访问接口…

PHP一体化解决方案高效整合与优化学校管理系统小程序源码

一体化解决方案&#xff0c;让学校管理系统焕发新生✨ &#x1f3eb; 开篇&#xff1a;传统管理的瓶颈与挑战 在快节奏的教育时代&#xff0c;传统的学校管理系统是否让你感到力不从心&#xff1f;&#x1f914; 信息孤岛、流程繁琐、效率低下...这些问题是否正困扰着你的工作…

vue 使用el-table 设置了show-overflow-tooltip属性,路由跳转后,气泡不消失的解决办法

文章目录 一、问题场景二、解决方法1.问题bug2.最终解决 总结 一、问题场景 在vue项目里使用el-table做一个列表页面&#xff0c;表格设置了show-overflow-tooltip属性&#xff0c;文字过长时鼠标滑过会展示气泡显示全部文字内容&#xff0c;因为设置路由缓存&#xff0c;如果…

哈苏相机SD卡数据恢复指南:从格式化到重生

在摄影的世界里&#xff0c;‌哈苏相机以其卓越的画质和精湛的工艺赢得了无数摄影师的青睐。‌然而&#xff0c;‌面对不慎的误操作&#xff0c;‌如SD卡格式化&#xff0c;‌珍贵的照片和视频数据可能瞬间消失&#xff0c;‌这无疑是对摄影师的重大打击。‌本文将深入探讨如何…

PostgreSQL遍历所有的表并为其创建基于某个字段的索引

完整代码 以下以"collect_time"字段为例&#xff0c;其他字段请自行全局替换 DO $$ DECLAREtable_name TEXT;index_name TEXT; BEGIN-- 遍历 public 模式下的所有表FOR table_name IN (SELECT table_nameFROM information_schema.tablesWHERE table_schema publicOR…

网上商城|基于SprinBoot+vue的分布式架构网上商城系统(源码+数据库+文档)

分布式架构网上商城系统 目录 基于SprinBootvue的分布式架构网上商城系统 一、前言 二、系统设计 三、系统功能设计 5.1系统功能模块 5.2管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍…

大语言模型之Qwen2技术报告阅读笔记

QWEN2 TECHNICAL REPORT——2024 核心内容 介绍了Qwen2 大模型系列&#xff1a;基于transformer架构的LLMs 通过以下四个部分来展开介绍&#xff1a; Tokenizer & Model 四个dense models&#xff0c;参数计数为 0.5 亿、15 亿、70 亿和 720 亿一个Mixture-of-Experts (…

svn迁移到git

通过git bash将svn迁移到git上&#xff0c;并保留svn的提交历史。 一、准备 1、在电脑上安装git 2、确认svn账号具备该svn地址的操作权限 3、准备将要操作的svn项目地址、以及该项目下所有提交人的账号信息&#xff08;在idea工具看提交历史&#xff09;&#xff0c;将信息存放…

classA cla= ...; if(cla == nullptr) 这种写法是否安全

在C中&#xff0c;classA cla …; 这行代码创建了一个名为 cla 的 classA 类型的对象&#xff08;假设 classA 是一个已经定义好的类&#xff09;。这个对象 cla 是在栈上分配的&#xff0c;而不是在堆上。因此&#xff0c;&cla&#xff08;即 cla 的地址&#xff09;永远…