Spring Boot 中的 EhCacheCacheManager 是什么,原理,如何使用

news2024/11/19 20:38:12

Spring Boot 中的 EhCacheCacheManager 是什么,原理,如何使用

前言

在现代化的应用程序中,缓存是提高性能的关键所在。缓存可以降低数据库的负载,提高响应速度,减少资源消耗。Spring Boot提供了多种缓存管理器,其中之一就是EhCacheCacheManager。本文将介绍EhCacheCacheManager的原理和使用方法。

在这里插入图片描述

什么是 EhCacheCacheManager

EhCacheCacheManager是Spring Boot提供的一种缓存管理器,它是基于Ehcache实现的。Ehcache是一个Java缓存框架,它提供了快速、可靠的缓存服务,具有高度可配置性和可扩展性。EhCacheCacheManager提供了一种在Spring Boot应用程序中配置和管理Ehcache缓存的方法。

EhCacheCacheManager 的原理

EhCacheCacheManager的原理是将缓存的数据存储在内存中,以提高应用程序的性能。当应用程序需要访问缓存数据时,EhCacheCacheManager首先查找缓存中是否存在该数据。如果存在,则将其返回给应用程序;否则,将从数据库或其他数据源中获取数据,并将其存储在缓存中,以便下次访问时更快地返回数据。

EhCacheCacheManager管理多个Ehcache缓存实例。每个缓存实例都有一个唯一的名称,可以在应用程序中使用该名称来访问缓存。缓存实例还可以配置缓存策略,例如过期时间、最大元素数等。

如何使用 EhCacheCacheManager

步骤 1:添加依赖

首先,我们需要在项目的 pom.xml 文件中添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
        <groupId>net.sf.ehcache</groupId>
        <artifactId>ehcache</artifactId>
    </dependency>
</dependencies>

步骤 2:配置 Ehcache 缓存

在Spring Boot应用程序中,我们可以通过在 application.properties 或 application.yml 文件中添加以下配置来配置Ehcache缓存:

spring:
  cache:
    type: ehcache

步骤 3:使用 EhCacheCacheManager

在Spring Boot应用程序中,我们可以使用@Cacheable、@CacheEvict、@CachePut注解来使用Ehcache缓存。以下是一些使用示例:

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    @Cacheable(value = "users", key = "#id")
    public User getUserById(Long id) {
        return userRepository.findById(id).orElse(null);
    }

    @CachePut(value = "users", key = "#user.id")
    public User saveUser(User user) {
        return userRepository.save(user);
    }

    @CacheEvict(value = "users", key = "#id")
    public void deleteUserById(Long id) {
        userRepository.deleteById(id);
    }
}

在上面的示例中,我们注解了三个方法。getUserById方法从缓存中获取用户数据,如果缓存中不存在,则从数据库中获取。saveUser方法将用户数据保存到数据库中,并将其存储在缓存中。deleteUserById方法从缓存中删除用户数据。

步骤 4:配置缓存策略

我们可以通过在 application.properties 或 application.yml 文件中添加以下配置来配置缓存策略:

spring:
  cache:
    ehcache:
      config: classpath:ehcache.xml

在ehcache.xml文件中,我们可以配置缓存策略,例如过期时间、最大元素数、内存存储器大小等。以下是一个示例:

<ehcache>
    <defaultCache
        maxEntriesLocalHeap="10000"
        maxEntriesLocalDisk="1000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="120"
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120"
        memoryStoreEvictionPolicy="LRU" />
    <cache
        name="users"
        maxEntriesLocalHeap="1000"
        timeToIdleSeconds="300"
        timeToLiveSeconds="600" />
</ehcache>

在上面的示例中,我们定义了一个默认的缓存策略和一个名为“users”的缓存策略。默认的缓存策略具有最大堆内存元素数为10000、最大磁盘元素数为1000、空闲时间为2分钟、存活时间为2分钟、不是永久的、不是持久的、LRU缓存策略。名为“users”的缓存策略具有最大堆内存元素数为1000、空闲时间为5分钟、存活时间为10分钟。

总结

在本文中,我们学习了Spring Boot中的EhCacheCacheManager是什么,它的原理以及如何使用它来管理Ehcache缓存。我们了解到,EhCacheCacheManager可以通过添加依赖、配置缓存、使用注解、配置缓存策略来使用。通过使用EhCacheCacheManager,我们可以轻松地在Spring Boot应用程序中使用Ehcache缓存,并显著提高应用程序的性能。

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

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

相关文章

结合GPS的SAT图道路识别

文章目录 2019 Leveraging Crowdsourced GPS Data for Road Extraction from Aerial Imagery基本介绍对GPS的使用关于怎么证明GPS信息有效How to render gps to imageGPS信息简介GPS点状特征GPS其他特征挖掘 可借鉴的点 2020 Convolutional Recurrent Network for Road Boundar…

《黑马头条》SpringBoot+SpringCloud+ Nacos等企业级微服务架构项目

环境搭建、SpringCloud微服务(注册发现、服务调用、网关) 1)课程对比 2)项目概述 2.1)能让你收获什么 2.2)项目课程大纲 2.3)项目概述 随着智能手机的普及&#xff0c;人们更加习惯于通过手机来看新闻。由于生活节奏的加快&#xff0c;很多人只能利用碎片时间来获取信息&#x…

红帽认证考试流程详解,让你少走弯路

参加红帽认证考试涉及以下三个流程 账号和证件的准备 1 RHN 账号注册 考试前需要您提前注册红帽帐号(RHN) 注册地址&#xff1a;https://www.redhat.com/wapps/ugc/register.html 注册时以下条目请重点注意&#xff1a; ▸ 账户类型选择 Personal ▸ 红帽账户登录名…

onnx修改模型节点【改变input的shape】

因为转onnx后模型的输入无法转rknn&#xff0c;所以要对onnx进行节点修改成左边 import onnx import onnx.helper as helper from onnx.helper import TensorProto import numpy as npmodel onnx.load(demo.change.onnx) #自己创建新的节点 ###############################…

【LeetCode热题100】打卡第29天:二叉树的层序遍历二叉树的最大深度

文章目录 【LeetCode热题100】打卡第29天&#xff1a;二叉树的层序遍历&二叉树的最大深度⛅前言 二叉树的层序遍历&#x1f512;题目&#x1f511;题解 二叉树的最大深度&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第29天&#xff1a;二叉树的层序遍历&am…

Stage模型HarmonyOS服务卡片开发ArkTS卡片相关模块

图1 ArkTS卡片相关模块 FormExtensionAbility&#xff1a;卡片扩展模块&#xff0c;提供卡片创建、销毁、刷新等生命周期回调。 FormExtensionContext&#xff1a;FormExtensionAbility的上下文环境&#xff0c;提供FormExtensionAbility具有的接口和能力。 formProvider&…

CASAIM三维扫描仪在运动防护的应用高端运动器材设计定制器材头盔

CASAIM三维扫描技术在运动防护领域有广泛的应用&#xff0c;可以帮助设计和生产高端运动器材&#xff0c;检测运动器材适配性&#xff0c;以提供更好的运动防护。 CASAIM三维扫描仪可以将运动员的身体尺寸和形状精确地捕捉下来&#xff0c;以便制造出符合其个人需求的定制化器…

稳坐钓鱼台,第三大手机操作系统?华为鸿蒙OS 4.0首批测试版推送

华为鸿蒙OS 4.开发者Beta版首期招募正式开始&#xff0c;首批机型包括华为P60、P60 Pro、Mate 50、MatePad Pro 11英寸性能版等8款。 不可思议的是&#xff0c;华为方才开始招募没几天&#xff0c;就已经开始向用户推送鸿蒙OS 4.开发者Beta版的升级。它的更新速度令人瞩目&…

ChatGPT 话题相关和类 ChatGPT 工具 | 优质文章、相关论文、应用、学习资源整理

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 人工智能与手机和互联网一样具有革命性。 2023 年已经过去一半&#xff0c;ChatGPT 在今年以来一直备受瞩目。目前 ChatGPT 的更新速度逐渐放缓&#…

常见的远程协助软件简介

1.RayLink远程控制软件 RayLink是一个支持多系统多设备间相互远程控制的软件&#xff0c;是具有远程制作、远程办公、远程游戏、远程协助等需求的IT技术、游戏玩家、网络办公等这些人的最佳选择。通过使用RayLink&#xff0c;可随时随地远程控制其他电脑或手机&#xff0c;远程…

AI日报:DragGAN通过拖拽像素点实现图像调整 等

&#x1f989; AI新闻 &#x1f680; DragGAN&#xff1a;一种直观的图像编辑工具&#xff0c;通过拖拽像素点实现图像调整 摘要&#xff1a;研究者们来自马克斯・普朗克计算机科学研究所、MIT CSAIL和谷歌&#xff0c;他们开发了一种名为DragGAN的图像编辑工具。通过拖拽像素…

MATLAB 之 Simulink 子系统及其封装

这里写目录标题 一、子系统及其封装1. 子系统的创建1.1 通过 Subsystem 模块建立子系统1.2 通过已有的模块建立子系统 2. 子系统的条件执行2.1 使能子系统2.2 触发子系统2.3 使能加触发子系统 3. 子系统的封装3.1 lcon & Ports 选项卡的参数设置3.2 Parameters & Dialo…

最大池化|知识补充

最大池化的超参数&#xff1a;规模为2的过滤器&#xff0c;步幅为2 对于左上角深蓝色的区域&#xff0c;其中最大的数值是9&#xff0c;所以得到的输出为9&#xff1b; 向右移动两个步幅&#xff0c;输出为2&#xff1b; 第二行&#xff0c;22的绿色区域内输出为6&#xff1b;…

2023版新鲜出炉,1000多道互联网Java高频面试真题及详解汇总

最近感慨面试难的人越来越多了&#xff0c;一方面是市场环境&#xff0c;更重要的一方面是企业对Java的人才要求越来越高了。 基本上这样感慨的分为两类人&#xff1a; 第一&#xff0c;虽然挂着3、5年经验&#xff0c;但肚子里货少&#xff0c;也没啥拿得出手的项目&#xff…

元宇宙装备展正式拉开帷幕,深眸科技CEO周礼出席产业论坛发表主题演讲

6月27日&#xff0c;一场令人期待已久的工业元宇宙盛会在昆山国际会展中心拉开帷幕&#xff0c;大会由昆山市人民政府主办&#xff0c;昆山市工业和信息化局、赛迪工业和信息化研究院集团&#xff08;苏州&#xff09;有限公司联合承办&#xff0c;并得到了十数家单位的支持&am…

Python入门的60个基础练习(二)

关注“Python专栏”微信公众号&#xff0c;回复暗号【面试大全】&#xff0c;立即领取面试题简历模板。 21-while-break break 是结束循环&#xff0c;break 之后、循环体内代码不再执行。 while True:yn input(Continue(y/n): )if yn in [n, N]:breakprint(running...)22-w…

机器学习12:分类 Classification

分类&#xff08;Classification&#xff09;是一个有监督的学习过程&#xff0c;目标数据集&#xff08;示例集&#xff09;中具有的类别是已知的&#xff0c;分类过程需要做的就是把每一条记录归到对应的类别下。由于必须事先知道各个类别的信息&#xff0c;并且所有待分类的…

vite项目集成eslint和prettier

一、eslint介绍 eslint中文官网&#xff1a;https://zh-hans.eslint.org/docs/latest/use/getting-started 1. 什么是eslint ESLint是一个开源的JavaScript代码静态分析工具&#xff0c;用于找出代码中的问题&#xff0c;并提供一致的编码风格。它可以扫描代码&#xff0c;并…

SpringCloud之Stream消息驱动RocketMQ讲解

文章目录 1 Stream消息驱动1.1 简介1.1.1 定义1.1.2 抽象模型1.1.3 绑定器 1.2 操作实操1.2.1 pom.xml1.2.2 操作实体 1.3 Stream 3.x 之前操作1.3.1 自定义通道1.3.2 消费消息1.3.3 发送消息1.3.4 配置文件 1.4 Stream 3.x 之后操作1.4.1 Stream 3.x 之后讲解1.4.2 消费消息1.…

linux屏幕旋转/weston去掉边框

目录 屏幕旋转 去掉边框 buildroot运行QT&#xff0c;你需要修改的都在这里了。 首先QT界面大小需要适应屏幕的分辨率&#xff0c;如果屏幕是1280*800&#xff0c;QT界面大小就不能设置为800*1280&#xff0c;一样需要设置为1280*800 屏幕旋转 方法一&#xff1a; xrandr…