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.rhkb.cn/news/415567.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hackme靶机攻略

1.通过nmap扫描靶场ip 2.目录扫描 3.找出文件存储位置&#xff0c;看看哪里可以上传文件 4.注册账号登录一下 点击search 5.输入1 and 11 -- 1 and 12 --看看有无SQL注入 6.判断字段数 1 order by 3 -- 说明字段数是3 7.查看数据库 -1 union select database(),2,3 # 8.查…

【Linux】使用Linux实现小程序 - 进度条

目录 一、缓冲区二、回车换行的概念三、进度条的设计3.1 版本1&#xff08;没有配合场景&#xff09;3.2 版本2&#xff08;配合场景&#xff09;3.3 版本3&#xff08;美化进度条&#xff09; 结尾 一、缓冲区 C/C语言&#xff0c;会针对标准输出&#xff0c;给我们提供默认的…

Python数据分析实战,兰州市二手房市场深度分析

作为购房者&#xff0c;除了关注地段与价格外&#xff0c;房屋的总价与面积的关系&#xff0c;以及房屋朝向的选择&#xff0c;同样是决策过程中的关键因素。那么&#xff0c;兰州市的二手房市场中&#xff0c;房屋总价与面积之间究竟存在怎样的关系&#xff1f;各个朝向的房源…

day-48 分割回文串

思路 利用dfs算法&#xff0c;用ids表示当前所指向字符的位置&#xff0c;依次判断s.charAt(ids),s.charAt(ids)s.charAt(ids1)…是否为回文字符串&#xff0c;如果是则加入链表p,再递归调用dfs函数 解题过程 每次调用dfs函数后记得还原现场 Code class Solution {public St…

宝藏!《联盟自控基础班筑基题库》(凤凰篇) 1-8章:甄选部分

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;初试《自控基础班筑基题库》(凤凰篇)。 Part1&#xff1a;资料封面&目录 Part2&#xff1a;资料各个章节具体内容 第1章 自动控制的基本概念 第2章 控制系统的数学模型 第3章 控制系统的时域分析 第4章 根轨迹法…

探索ArrayList的线程不安全性

文章目录 概要示例代码原因解决用 synchronized 保证安全添加元素其他方法 总结 概要 要测试ArrayList的线程不安全性&#xff0c;可以创建多个线程同时对 ArrayList 进行修改操作&#xff08;如添加、删除元素&#xff09;&#xff0c;并观察是否会引发异常或数据不一致的问题…

unity游戏开发——标记物体 一目了然

Unity游戏开发:标记物体,让开发变得一目了然 “好读书&#xff0c;不求甚解&#xff1b;每有会意&#xff0c;便欣然忘食。” 本文目录&#xff1a; Unity游戏开发 Unity游戏开发:标记物体,让开发变得一目了然前言1. 什么是Tag&#xff1f;2. Unity中如何添加和管理Tag步骤1&am…

微电网管理系统

微电网管理系统 1. 相关概念简介 基本概念及分析意义&#xff1a; 微电网基本概念&#xff1a;微电网&#xff08;MG&#xff09;由分布式电源、用电负荷、能量管理系统等组成&#xff0c;是一个能够基本实现内部电力电量平衡的供用电系统。 通过整合分布式电源、储能、负荷…

阿里巴巴数学竞赛成绩未公布:背后的权衡与期待

文 | 头部财经首席评论员白立新 发布 | 头部财经 top168.com 导语&#xff1a;2024 年阿里巴巴数学竞赛成绩迟未公布&#xff0c;引发广泛猜测。中专生姜萍的表现备受瞩目&#xff0c;达摩院陷入两难困境。这场竞赛结果的公布&#xff0c;关乎多方利益与社会影响&#xff0c;…

学习之git

github 创建远程仓库 代码推送 Push 代码拉取 Pull 代码克隆 Clone SSH免密登录 Idea集成GitHubGitee码云 码云创建远程仓库 Idea集成Gitee码云 码云连接Github进行代码的复制和迁移GitLab gitlab服务器的搭建和部署 Idea集成GitLabgit概述 一切皆本地 版本控制工具 集中…

服务器数据恢复—磁盘坏扇区导致raid6阵列崩溃的数据恢复案例

服务器存储数据恢复环境&#xff1a; 一台存储中有一组由12块SAS硬盘组建的raid6磁盘阵列&#xff0c;划分了1个卷&#xff0c;由数台Vmware ESXI主机共享存储。卷中存放了大量的Windows系统虚拟机。这些虚拟机系统盘大小一致&#xff0c;数据盘大小不确定&#xff0c;数据盘都…

8连接数据与决策:信息系统基础概念解读

信息系统概述 信息系统是由计算机硬件、网络和通信设备、计算机软件、信息资源、信息用户和规章制度组成的以处理信息流为目的的人机一体化系统。 信息系统的5个基本功能&#xff1a;输入、存储、处理、输出和控制。 信息系统的性质影响着系统开发者和系统用户的知识需求。“…

vue大数据展示之虚拟列表

面试代码学习 父组件&#xff1a; <template><div class"box"><!--items总条数、 size数据高度、 shownumber每次渲染数据--><list :items"items" :size"60" :shownumber"10"></list></div><…

生活方式对人健康影响非常大 第三篇

身体健康因素中 生活方式占到60% 赶紧去调整自己哪错了 上游的生活方式管理 是药三分毒 药物会影响身体肝肾功能,代谢 所以你要去找上游到底是我哪错了 短板越多 个健康状态越差 饮食管理是生活方式管理中难度最大的 原则1:与基因相对应相平衡 只吃素 会导致大脑萎…

并发集合(二):CopyOnWriteArrayList

1、CopyOnWriteArrayList介绍 CopyOnWriteArrayList 是一个线程安全的ArrayList。 CopyOnWriteArrayList 是基于Lock锁和线程副本的形式来保证线程安全的&#xff0c; 在写数据时&#xff0c;先获取Lock锁&#xff0c;然后复制一个副本&#xff0c;添加数据时&…

Qt 按钮图片文字上下结构(纯qss实现)

效果图 实现 QSS QPushButton {border-radius: 6px;opacity: 1;font: 9pt "微软雅黑";color: #333;padding-top:20px;background: url(:/images/ico_un_collected.png) top center no-repeat; } QPushButton:hover {color: #408cff; } QPushButton:pressed {color: …

14、Django Admin的“Action(动作)”中添加额外操作

如图红框增加操作 将以下代码添加到HeroAdmin类中 actions ["mark_immortal"] def mark_immortal(self, request, queryset):queryset.update(is_immortalTrue) 修改后完整代码如下&#xff1a; admin.register(Hero) class HeroAdmin(admin.ModelAdmin):list_di…

固定式测斜仪在铁路防滑坡中的应用

在铁路建设与运营过程中&#xff0c;滑坡作为一种严重的地质灾害&#xff0c;不仅威胁着工程安全&#xff0c;还直接关系到人民生命财产的安全。面对滑坡频发&#xff0c;特别是南方铁路干线所处的地质灾害易发区域&#xff0c;如何有效识别、监测并预防滑坡&#xff0c;成为铁…

【C++从练气到飞升】19---哈希:哈希冲突 | 哈希函数 | 闭散列 | 开散列

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书&#x1f389; 目录 ⛳️推荐 一、unordered 系列关联式容器 二、unordered_map 1.1 unordered_map 介绍 1.2 unordered_map 的…

NoSql数据库 - Redis Cluster集群详解及案例实现

Redis Cluster集群&#xff08;无中心化设计&#xff09; 1.1 Redis Cluster 工作原理 在哨兵sentinel机制中&#xff0c;可以解决redis高可用问题&#xff0c;即当master故障后可以自动将slave提升为master&#xff0c;从而可以保证redis服务的正常使用&#xff0c;但是无法…