SpringBoot配置第三方专业缓存技术jetcache方法缓存方案

jetcache方法缓存

我们可以给每个方法配置缓存方案

JetCache 是一个基于 Java 的缓存库,支持多种缓存方案和缓存策略,主要用于提升应用程序的性能和响应速度。它提供了多种缓存模式和特性,可以根据需求选择合适的缓存方案。

JetCache 的主要特点和功能

  1. 支持多种缓存后端

    • JetCache 支持多种缓存后端,包括 Redis、Caffeine、LevelDB 等,可以根据项目的需要选择合适的后端存储。
  2. 多种缓存模式

    • Local Cache:本地缓存,使用 Caffeine 或者 ConcurrentHashMap 等,适用于单个应用节点内的快速访问。
    • Remote Cache:远程缓存,例如 Redis,适用于分布式环境下的数据共享和访问。
  3. 缓存注解支持

    • 提供了注解方式来标记需要缓存的方法或者数据,简化了缓存的配置和管理。
  4. 缓存策略

    • 支持多种缓存策略,例如基于 TTL(Time-To-Live)的过期策略、基于定时刷新的刷新策略、基于手动更新的策略等,可以根据业务需求选择合适的策略。
  5. 二级缓存支持

    • 支持二级缓存,例如先从本地快速缓存中获取数据,如果未命中再从远程缓存中获取,可以有效减少远程调用带来的延迟。
  6. 数据序列化和反序列化

    • 提供了对缓存数据的序列化和反序列化支持,可以灵活地处理不同类型的数据对象。
  7. 监控和统计

    • 提供了监控和统计功能,可以实时查看缓存的使用情况、命中率等指标,便于性能调优和监控。

使用 JetCache 的步骤

使用 JetCache 进行方法级别的缓存通常涉及以下几个步骤:

  1. 引入 JetCache 依赖: 在项目的 Maven 或者 Gradle 配置文件中引入 JetCache 的相关依赖。

  2. 配置缓存后端: 配置 JetCache 使用的缓存后端,例如 Redis、Caffeine 等。需要配置缓存的地址、端口、密码等参数。

  3. 定义缓存配置: 可以通过 Java 代码或者配置文件的方式定义缓存的配置信息,包括缓存的名称、过期时间、缓存模式等。

  4. 在方法上添加缓存注解: 使用 JetCache 提供的注解,如 @Cached@CacheInvalidate 等,来标记需要进行缓存操作的方法。可以指定缓存的 key、条件、过期时间等参数。

  5. 调整缓存策略: 根据具体的业务需求和性能要求,调整缓存的策略和参数,例如缓存的过期时间、刷新策略等。

  6. 启动应用程序: 启动应用程序,JetCache 将根据配置和注解来管理和处理缓存,提升应用的性能和响应速度。

我们是在业务层的实现类里操作的

我们首先要在启动响应类里打开开关

@EnableCreateCacheAnnotation
@EnableMethodCache(basePackages = "com.example.demo")

在业务层的实现类里去修改代码

@Override
@Cached(name="book",key="#id",expire = 3600)
public User getById(Integer id) {return userDao.selectById(id);
}

注意 预防空指针异常

注意 预防序列化反序列化

配置中同样要进行修改

意思是告诉框架 这是个java对象

启动成功

但是我们有一个问题

如果取缓存

缓存中的数据变化了

我们确没有更新

我们怎么去做

我们要在更新操作里去修改

我们每次调用更新操作或者是删除操作的时候

都会有个数值的更新操作

@Override
@CacheUpdate(name="book_",key="#book.id",value="#book")
public boolean update(User user) {return userDao.updateById(user)>0;
}

如果我们有两个系统

同时对一个表进行操作

一个删除 对方也不知道

这就叫我们内存中的数据和系统中的数据不同步

我们要进行一个刷新

设置每十秒进行一次刷新

@CacheRefresh(refresh = 10)
package com.example.demo.service.impl;import com.alicp.jetcache.anno.CacheInvalidate;
import com.alicp.jetcache.anno.CacheRefresh;
import com.alicp.jetcache.anno.CacheUpdate;
import com.alicp.jetcache.anno.Cached;
import com.example.demo.dao.UserDao;
import com.example.demo.domain.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;@Override@Cached(name="book_",key="#id",expire = 3600)@CacheRefresh(refresh = 10)public User getById(Integer id) {return userDao.selectById(id);}@Overridepublic boolean save(User user) {return userDao.insert(user)>0;}@Override@CacheUpdate(name="book_",key="#book.id",value="#book")@CacheRefresh(refresh = 10)public boolean update(User user) {return userDao.updateById(user)>0;}@Override@CacheInvalidate(name="book_",key="#book.id")@CacheRefresh(refresh = 10)public boolean delete(Integer id) {return userDao.deleteById(id)>0;}@Overridepublic List<User> getAll() {return userDao.selectList(null);}
}

我们还可以加上一个配置

设置每隔一分钟会进行jetcache信息的打印

jetcache:statIntervalMinutes: 1local:default:type: linkedhashmapkeyConvertor: fastjson

你看在控制台就能打印了

我们进行查询后

有了数据

小结

个人号推广

博客主页

多多!-CSDN博客

Web后端开发

https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482

Web前端开发

https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482

数据库开发

https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482

项目实战

https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482

算法与数据结构

https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482

计算机基础

https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482

回忆录

https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482

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

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

相关文章

在WordPress上添加亚马逊联盟链接的三种方法

在互联网快速发展的今天&#xff0c;很多人都希望通过网络来增加收入&#xff0c;而加入亚马逊联盟计划&#xff08;Amazon Associates&#xff09;无疑是一个不错的选择。如果你有一个WordPress网站&#xff0c;那么在文章中添加亚马逊联盟链接是个很好的变现方式。今天&#…

钡铼BL110在智慧气象站实现Modbus转MQTT无线接入主流云

随着物联网&#xff08;IoT&#xff09;技术的发展&#xff0c;各行各业都在积极探索将智能设备与云平台相结合&#xff0c;以提升系统的智能化和自动化水平。智慧气象站作为其中重要的一环&#xff0c;通过实时监测环境数据&#xff0c;为农业、交通、航空等行业提供精准的气象…

Idea Git中 unversioned files的处理

项目中&#xff0c;使用git commit命令可以查看当前所在的分支&#xff0c;以及当前改动的文件&#xff0c;可以使用快捷键Alt 0打开/关闭&#xff1b;如下图所示&#xff0c; 可以看到分成了两个不同的区域&#xff0c; Changes 表示有改动的文件&#xff0c;包括修改、新增…

apache activeMq

https://blog.csdn.net/qq_29651203/article/details/108487924 游览器输入地址: http://127.0.0.1:8161/admin/ 访问activemq管理台 账号和密码默认为: admin/admin# yml配置的密码也是如下的密码 activemq:url: failover:(tcp://localhost:61616)username: adminpassword: ad…

哪个充电宝牌子好?性价比高与质量好并存!热门充电宝推荐!

随着科技的不断进步&#xff0c;我们的日常生活越来越依赖于便携式电子设备。然而&#xff0c;电池续航问题始终是这些设备的一大软肋。为了确保我们的智能手机、平板电脑、甚至是智能手表在忙碌的日子里始终有电&#xff0c;一个可靠的充电宝成为了我们的必备之选。面对市场上…

VoIP Hopper一键分析VoIP 网络信息(KALI工具系列二十九)

目录 1、KALI LINUX 简介 2、VoIP Hopper工具简介 3、信息收集 3.1 目标主机IP 3.2kali的IP 4、操作实例 4.1 VLAN 跳跃攻击 4.2 指定MAC地址 4.3 设置参数 5、总结 1、KALI LINUX 简介 Kali Linux 是一个功能强大、多才多艺的 Linux 发行版 &#xff0c;广泛用于网络…

flask实战之模板实现公共导航

基础实现 目标 在Flask中&#xff0c;使用模板继承和块&#xff08;blocks&#xff09;可以方便地提取公共导航菜单&#xff0c;使得您可以在多个页面上重用相同的导航结构。以下是一个基本示例&#xff0c;展示如何创建一个包含公共导航菜单的模板&#xff1a; 创建基础模板…

前端菜鸡学习日记 -- 关于pnpm

哈咯哇大家&#xff0c;我又来了&#xff0c;最近稍微悠闲一些&#xff0c;所以就趁着这个机会学习一些新的知识&#xff0c;今天就是碰巧遇到了pnm&#xff0c;这个可以看作是npm的升级版本&#xff0c;比npm要快&#xff0c;用起来也更得劲更迅速 官网地址&#xff1a;https…

【CT】LeetCode手撕—103. 二叉树的锯齿形层序遍历

目录 题目1- 思路2- 实现⭐103. 二叉树的锯齿形层序遍历——题解思路 2- ACM实现 题目 原题连接&#xff1a;103. 二叉树的锯齿形层序遍历 1- 思路 二叉树的层序遍历&#xff0c;遇到奇数时&#xff0c;利用 Collections.reverse() 翻转即可 2- 实现 ⭐103. 二叉树的锯齿形层…

优惠卷秒杀(并发问题)

Redis实战篇 | Kyles Blog (cyborg2077.github.io) 目录 一、Redis实现全局唯一id 二、添加优惠卷 三、实现秒杀下单 四、解决超卖问题&#xff08;库存为负&#xff09; 乐观锁解决超卖问题&#xff08;CAS法&#xff09; 五、实现一人一单 ​编辑 悲观锁解决一人一单问题…

QT绘画仪表盘

代码一步一步讲&#xff0c;就不写用啥之类的了&#xff0c;暗部走来&#xff0c;自己找使用的类以及使用方法 1、创建工程 2、重载paintEvent #include <QMainWindow> #include <QPainter> #include <QPaintEvent> protected:virtual void paintEvent(QP…

QT自定义标题栏窗口其一:实现拖动及可拉伸效果

1、效果 2、核心代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(paren

前端新手小白的Vue3入坑指南

昨天有同学说想暑假在家学一学Vue3&#xff0c;问我有没有什么好的文档&#xff0c;我给他找了一些&#xff0c;然后顺带着&#xff0c;自己也写一篇吧&#xff0c;希望可以给新手小白们一些指引&#xff0c;Vue3欢迎你。 目录 1 项目安装 1.1 初始化项目 1.2 安装初始化依…

redis哨兵模式下业务代码连接实现

目录 一&#xff1a;背景 二&#xff1a;实现过程 三&#xff1a;总结 一&#xff1a;背景 在哨兵模式下&#xff0c;真实的redis服务地址由一个固定ip转变为可以变化的ip,这样我们业务代码在连接redis的时候&#xff0c;就需要判断哪个主redis服务地址&#xff0c;哪个是从…

火绒安全删除explorer.exe文件造成windows系统异常的问题

问题 过程是这样的&#xff0c;电脑在使用过程中突然就变成了黑色的&#xff0c;任务栏、桌面等都消失了&#xff0c;只有部分程序的窗口。具体如下&#xff1a; 因为&#xff0c;在变化的时候&#xff0c;我有瞟到一眼有个火绒的气泡消息&#xff0c;就感觉是火绒错误的删除…

适用于Mac的免费外置硬盘数据恢复软件

“我有一个 1 TB 的外置硬盘&#xff0c;它被意外格式化了。我尝试从中恢复丢失的数据。我把它连接到我的Mac&#xff0c;但里面什么也没找到。我正在寻找适用于Mac的免费外置硬盘数据恢复软件&#xff0c;例如奇客数据恢复Mac版或其他Mac数据恢复免费软件来扫描它并恢复数据。…

如何有效地进行机台数据管理,让数据发挥更大的价值?

机台数据管理是一个涉及收集、存储、分析和保护与机台&#xff08;可能是机械设备、生产线设备、医疗设备等&#xff09;相关数据的过程。通常包括以下几个方面&#xff1a; 1.数据收集&#xff1a;使用传感器和数据采集系统来收集机台的性能数据&#xff0c;如温度、压力、速…

Python轻松设置Excel单元格数字显示格式

Excel作为强大的数据处理与分析工具&#xff0c;不仅能够存储大量数据&#xff0c;还支持复杂的数据处理与可视化功能。而如何恰当地展示Excel表格中的数据是Excel文件制作的关键之一。这便涉及到Excel单元格数字格式的设置。数字格式不仅关乎数据的美学呈现&#xff0c;如货币…

【Sa-Token|4】Sa-Token微服务项目应用

若微服务数量多&#xff0c;如果每个服务都改动&#xff0c;工作量大&#xff0c;则可以只在网关和用户中心进行改动&#xff0c;也是可以实现单点登录的。 这种方式可以通过在网关服务中生成和验证 Sa-Token&#xff0c;并将其与现有的 Token关联存储在 Redis 中。用户中心提供…

arsetryhtehrwgefwadasdadasd

驱动项目 https://github.com/wqreytuk/article/blob/main/agsdygasidgasuidgoGx64_ASM_Kernel_Mode-main.7z 48b91400000080f7ffff48b8bd427ae5d594bfd6488b0948f7e148b8cdcccccccccccccc48c1ea1748f7e24c8bea49c1ed02 直接在windbg中把执行内存修改为上面这一串字节序列&am…