springboot缓存

news2024/11/29 18:47:01

1. 认识缓存  一级缓存

- 缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质

- 使用缓存可以有效的减少低速数据读取过程的次数,提高系统性能 

 

@Service
public class BookServiceImplCache implements BookService {
    @Autowired
    private BookDao bookDao;

    private HashMap<Integer,Book> cache =new HashMap();
@Override
public Book getById(Integer id) {
    Book book =cache.get(id);
    if(book ==null){
        //如果boo的id在缓存中不存在,就去数据库中读取,并将读取结果写在缓存中
        //如果在缓存中,则直接去读取缓存中数据
        System.out.println("打印查看map中是否有查询id 的数据------"+cache.get(id));
        Book queryBookFromSQL =bookDao.getById(id);
        cache.put(id,queryBookFromSQL);
        System.out.println("打印查看map中是否有查询id 的数据------"+cache.get(id));
        System.out.println("当前缓存中的所有数据");
        System.out.println("通过Map.keySet遍历key和value:");
        for (Integer key : cache.keySet()) {
            System.out.println("key= "+ key + " and value= " + cache.get(key));
        }

        return queryBookFromSQL;
    }
    return cache.get(id);
}

第一次执行的结果------缓存中没有数据,会从数据库去拿数据==>  Preparing: select * from tbl_book where id = ?,

也会将读取的数据,放入到map中去


打印查看map中是否有查询id 的数据------null
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@118f4b27] was not registered for synchronization because synchronization is not active
JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@5b87f91c] will not be managed by Spring
==>  Preparing: select * from tbl_book where id = ?
==> Parameters: 122229(Integer)
<==    Columns: id, type, name, description
<==        Row: 122229, for better tomorrow, from today, 我是行动上的巨人
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@118f4b27]
打印查看map中是否有查询id 的数据------Book(id=122229, type=for better tomorrow, name=from today, description=我是行动上的巨人)

 

第二次执行的结果

---控制台没有去数据库读取数据,证明此次是从map中拿取的数据 

2. 二级缓存

- 缓存不仅可以用于提高永久性存储介质的数据读取效率,还可以提供临时的数据存储空间

3 . 使用SpringBoot提供的缓存技术

- 缓存的使用

  -  1. 启用缓存

  -   2. 设置进入缓存的数据

  -  3  设置读取缓存的数据

导入坐标

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

 开启缓存,

在application上添加 

@EnableCaching
@Override
@Cacheable(value = "cacheSpace",key="#id")
public Book getById(Integer id) {
    return bookDao.getById(id);
}

______________________________________

一个小插曲报错

启动Redis报错 java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable payload

原因: 实体类是一个对象
在redis序列化的时候采用的是 gdk序列化

解决办法
类implements Serializable
不然redis不知道此类是可以被序列化的

 

______________________________________

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/528165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

玩转服务器之环境篇:PHP和Python环境部署指南 | 京东云技术团队

前几篇文章中讲解了如何搭建docker和Java Web环境的方法&#xff0c;本篇文章来教大家搭建一个好的PHP和Python环境&#xff0c;可以帮助开发和运行PHP和Python应用程序&#xff0c;使其更加高效和稳定。 一、 PHP环境介绍 好的开发环境无疑会大大提升编码效率&#xff0c;近…

搭载RK3588的Orange Pi 5 Plus来了!首发“亲民价”649元起!

Orange Pi 5 Plus来了。令人惊艳的Orange Pi 5 家族将又添一个重量级新成员! 作为香橙派首款搭载瑞芯微RK3588的开发板&#xff0c;Orange Pi 5 Plus将成为顶级高性能开发板的臻选。先说几个令人惊艳的亮点&#xff1a;两个PCIe扩展的2.5G以太网接口&#xff1b;eMMC 闪存插座…

黑马Redis笔记高级篇 | 分布式缓存

黑马Redis笔记高级篇 | 分布式缓存 1、Redis持久化&#xff08;解决数据丢失&#xff09;1.1 RDB持久化1.1.1 定义1.1.2 异步持久化bgsave原理 1.2 AOF持久化1.3 RDB和AOF比较 2、Redis主从&#xff08;解决并发问题&#xff09;2.1 搭建主从架构2.2 主从数据同步原理2.2.1 全量…

这样连交换机和路由器,多少网工没试过?

大家好&#xff0c;我是老杨。 交换机已经说过很多遍了&#xff0c;园区组网案例、交换机级联、光模块配件解读等等…… 有群友说想要看更多的配置案例&#xff0c;这次就给你说说&#xff0c;交换机和路由器对接上网配置。 还搞不明白交换机和路由器的&#xff0c;复习一下…

webpack开发服务器配置

&#x1f482; 个人网站:[【紫陌】【笔记分享网】](http://zimo.aizhaiyu.com/) &#x1f485; 想寻找共同学习交流、共同成长的伙伴&#xff0c;[请点击【前端学习交流群】](http://zimo.aizhaiyu.com/wechat/wechat.html) 文章最后有作者l联系方式&#xff08;备注进群&am…

写给程序员Android Framework 开发,

前言 在 Android 开发者技能中&#xff0c;如果想进大厂&#xff0c;一般拥有较好的学历可能有优势一些。但是如果你靠硬实力也是有机会的&#xff0c;例如死磕Framework。Framework 知识广泛应用在Android各个领域中&#xff0c;重要性显而易见。 成为一名Android Framework…

【2023程序员必看】大数据行业分析

1、政策重点扶持&#xff0c;市场前景广阔 2014年&#xff0c;大数据首次写入政府工作报告&#xff0c;大数据逐渐成为各级政府关注的热点。 2015年9月&#xff0c;国务院发布《促进大数据发展的行动纲要》&#xff0c;大数据正式上升至国家战略层面&#xff0c;十九大报告提…

网络突发环路,原来可以这么解决啊

大家好&#xff0c;我是老杨。 我相信&#xff0c;任何一个网工都遇到过网络环路&#xff0c;遇到这个情况&#xff0c;你的应对方法是什么&#xff1f; 我了解到大部分的初阶网工&#xff0c;最开始都只能用拔插网线和重启观测法来排除回路。 简单来说&#xff0c;就是先给…

下一个超级生态节点openGauss ——鲲鹏开发者峰会2023 openGauss技术专题回顾

摘要 2023年5月6日&#xff0c;一场面向计算产业开发者的技术盛会“ 鲲鹏开发者峰会2023 ”在东莞松山湖正式拉开帷幕&#xff0c;在其中的“openGauss技术专场”上&#xff0c;openGauss相关专家和伙伴围绕openGauss社区进展、openGauss5.0版本技术创新&#xff0c;基于op…

前端开发之函数式编程实践 | 京东云技术团队

作者&#xff1a;京东科技 牛志伟 函数式编程简介 常见应用场景 1、ES6中的map、filter、reduce等函数 [1,2,3,4,5].map(x > x * 2).filter(x > x > 5).reduce((p,n) > p n);2、React类组件 -> 函数式组件hooks、Vue3中的组合式API 3、RxJS、Lodash和Ramd…

震惊!百度搜索地位崩塌,微软Bing和俄罗斯Yandex上升

我是卢松松&#xff0c;点点上面的头像&#xff0c;欢迎关注我哦&#xff01; 中国的搜索引擎市场正在发生巨变。据美国一家网站流量检测机构StatCounte显示&#xff1a;从2022年到2023年&#xff0c;百度的搜索流量份额急剧下降至39.64%&#xff0c;而微软的Bing和俄罗斯的Ya…

Spring Boot集成ShardingSphere配合dynamic-datasource进行数据源切换 | Spring Cloud 49

一、前言 通过以下系列章节&#xff1a; Spring Boot集成ShardingSphere实现数据分片&#xff08;一&#xff09; | Spring Cloud 40 Spring Boot集成ShardingSphere实现数据分片&#xff08;二&#xff09; | Spring Cloud 41 Spring Boot集成ShardingSphere实现数据分片&…

沉痛悼念互联网[云原生领域]技术大牛----左耳朵耗子(陈皓老师)

陈皓老师&#xff0c;网名"左耳朵耗子"&#xff0c;是一位在互联网界享有盛誉的伟大人物。他的一生充满了创造力、智慧和奉献精神&#xff0c;对技术领域做出了卓越的贡献。 陈皓老师 为什么网名叫 左耳朵耗子? 陈皓老师之所以取名"左耳朵耗子"&#xff…

HDMI接口说明

目录 一、概述 二、信号说明 三、信号定义 四、握手过程 五、调试步骤 一、概述 HDMI ,High-Definition Multimedia Interface,即高清晰度多媒体接口&#xff0c;是电脑、电视等相关显示设备的接口。 二、信号说明 HDMI分为Source,Sink.Source即信号源&#xff0c;为HDMI…

网络基础协议

1、网络协议/TCP/UDP/HTTP 网络协议是指在计算机网络中&#xff0c;不同设备之间进行通信时所使用的规则、约定和标准。常见的网络协议包括TCP协议、UDP协议、HTTP协议等。 TCP协议是一种面向连接、可靠的传输层协议&#xff0c;它提供了可靠的数据传输和数据包检错能力。在网…

新星计划2023【网络应用领域基础】——————Day3

常见的网络基础介绍 前言 我们系数了网络发展的历史和一些常见的协议&#xff0c;以下文章我将详细的讲网络层协议以及用拓扑来解释单臂路由和vlan的划分。结尾将会额外的额解释常见的抓包。 目录 常见的网络基础介绍​ 前言 我们系数了网络发展的历史和一些常见的协议&…

蓝桥杯拿到一等奖,并分享经验

昨天和群里的小伙伴在群里聊&#xff0c;有的小伙伴竟然说蓝桥杯一等奖没有含量&#xff0c;我也是醉了&#xff01; 就像去年看了一个号主写的&#xff1a;研究生遍地都是! 放眼全国14亿人口&#xff0c;别说研究生了&#xff0c;本科生占比有多少? “蓝桥杯是我人生中得到…

移动硬盘中剪切的文件能恢复吗?可尝试这四种方法找回

在使用移动硬盘时&#xff0c;我们所存储的数据很容易出现意外丢失、被删除、受到病毒感染等方方面面的问题。而如果你使用的是剪切操作&#xff0c;而不是复制操作来移动文件&#xff0c;那么在操作过程中很容易因为各种原因导致数据丢失。如果你遇到了这种情况&#xff0c;那…

持续熬夜爆肝,炸裂的OPEN AI 快速开发平台后台管理同步上线啦 ,完全免费聊天主题也即将上线

持续几天几夜晚&#xff0c;不眠不休的项目开发&#xff0c;终于完成第一版整 OPEN AI 快速开发平台API 和大家见面了&#xff0c;这次包含后台管理&#xff0c;用户开发者入住&#xff0c;和完整的接口文档 OPEN AI快速开发平台这里进入 连接上一篇文章 爆肝一周&#xff0…

【JAVA程序设计】(C00134)基于SSM(非maven)的在线餐饮管理系统

基于SSM&#xff08;非maven&#xff09;的在线餐饮管理系统 项目简介项目获取开发环境项目技术运行截图 项目简介 ssm在线餐饮管理系统 本项目包含管理员与普通用户两种角色&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录,查看销售报表,餐桌管理,菜式管理,菜品…