Spring Boot通过@EnableCaching注解开启全局服务缓存功能!
wptr33 2025-06-10 02:12 1 浏览
Caching缓存
缓存在现代应用中无处不在,它为服务的高可用提供了很大的帮助。Spring框架提供了对缓存的支持。Spring Boot通过@EnableCaching注解开启全局服务缓存功能。对于某个服务类方法的返回值缓存,可以采用@Cacheable注解实现。spring-boot-startercache模块集成了现有的一些缓存框架,如EhCache和Couchbase等。
访问EhCache
EhCache是一个常用的缓存框架,可以通过配置文件ehcache.xml生成EhCache-CacheManager。Spring Boot的配置文件内容如下:
spring:
cache:
ehcache:
config: classpath:ehcache.xml
type: ehcache
配置文件ehcache.xml的内容如下:
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="6000"
timeToLiveSeconds="6000"
overflowToDisk="false"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="120"
memoryStoreEvictionPolicy="LRU"
/>
<cache name="testCache"
maxElementsInMemory="10000"
overflowToDisk="false"
eternal="false"
timeToLiveSeconds="72000"
timeToIdleSeconds="72000"
diskPersistent="false"
diskExpiryThreadIntervalSeconds="600"
memoryStoreEvictionPolicy="LRU"
/>
</ehcache>
下面是一个具体的示例:
@Service
public class UserService {
@Autowired
private UserDao userDao;
//缓存返回数据
@Cacheable(value="user")
public User findOne(Integer userId){
return userDao.findOne(userId);
}
//清除缓存
@CacheEvict(value="user")
public String delete(Integer userId){
return userDao.delete(userId);
}
//缓存结果
@CachePut(value="userAll")
public List<User> findAll(){
return userDao.findAll();
}
}
以上代码中3个注解的作用如下:
@Cacheable:缓存结果,只执行一次方法,下一次不会调用方法,直接返回缓存结果。
@CachePut:可以根据参数进行缓存,与@Cacheable不同的是,不判断缓存中是否有之前执行的结果,每次都会调用方法。
@ CacheEvict:从缓存中删除响应的数据。
访问Couchbase
Couchbase是一个面向文档的分布式和多模型开源数据库,主要用于交互式应用程序。Spring Boot为Couchbase提供了自动配置,Spring Data为Couchbase提供了抽象封装。Spring Boot提供了Couchbase的Starter,即
spring-boot-starter-data-couchbase。
由于Couchbase是存放在内存中,所以读取速度非常快。
Couchbase还自带集群方案,支持多副本和持久化,可以满足系统的高可用方案。
Spring Boot集成Couchbase的配置示例如下:
spring:
couchbase:
bootstrap-hosts: localhost
username: admin
password: 123456
bucket:
name: test
password: 123456
env:
timeouts:
connect: 30000
query: 2000
Spring Boot通过CouchbaseTemplate模板类操作数据库。
相关推荐
- flarum安装使用教程(flm安装教程安卓)
-
Flarum是一款现代化的、简洁美观的论坛软件,以下是关于它的环境安装:安装搭建基础环境:...
- 从abc起步学做网站(4)(从abc开始学英语用什么软件)
-
上一次我们做了一个大多数网站使用的模板,带有顶部、左侧导航、右侧主内容、底部等板块。现在我们把它逐步扩展成一个论坛。一个论坛的基本功能有注册,登陆,发帖,回帖,看帖,删帖等,我们一步步来做。首先大多数...
- 了解webshell变形的一些思路(webxshell)
-
请遵守法律法规,文章旨在提高安全软件的应变策略,严禁非法使用,后果自负。前言在攻防场景下,黑客常常在找到某个上传接口,第一步肯定是先测试后缀是否有限制,第二步则是测试上传的文件是否能解析,最后便确认即...
- MySQL8安装 八: 使用phpMyadmin客户端
-
MySQL8安装一:源码安装...
- PHP基本的语法、注释:让你的代码充满神秘色彩
-
PHP魔法咒语:让你的代码充满神秘色彩(带你进入PHP的魔法世界)一、笔记:基本的PHP语法PHP是一种超级强大的脚本语言,专为Web开发而设计。要想成为真正的PHP魔法师,首先需要掌握一些基本的语法...
- PHP——bc函数及其应用详解(php bcmul)
-
bcadd——两个任意精度数字的加法计算(PHP4,PHP5,PHP7,PHP8)...
- 从零学习php之php语法——课程1(php零基础自学)
-
以后将会每天更新一篇电脑编程教程有需要的朋友记得订阅转发哟怎么学习php?对于想学php还没入门的朋友很多都在纠结怎么开始第一步。我很了解php初学者的心理,因为我也是从那个阶段过来的,也是自学。那...
- 全新版Jetpack进阶提升,系统性落地短视频App|超清完结无秘
-
全新版Jetpack进阶提升,系统性落地短视频App|超清完结无秘来百度APP畅享高清图片...
- Reactive系统的反压(什么是反压)
-
原文BackpressureinReactiveSystemshttps://foojay.io/today/backpressure-in-reactive-systems/?spm=ata...
- Kotlin设计模式:Flyweight(享元)模式
-
享元模式的目的...
- 如何使用 Kotlin 在 Android 应用程序中使用 DataStore 首选项
-
在本教程中,我将向您展示如何使用数据存储首选项在Android应用程序中本地保存数据,而不是使用共享首选项的旧方法。我看到很多人不知道如何使用DataStore,他们认为这太难了,所以在这篇文章...
- Spring Native 中文文档(springdatajpa中文文档)
-
https://docs.spring.io/spring-native/docs/current/reference/htmlsingle/#getting-started-buildpacks...
- 详解Android官推Kotlin-First的图片加载库
-
前言Coil是一个非常年轻的图片加载库,在2020年10月22日才发布了1.0.0版本,但却受到了Android官方的推广,在AndroidDevelopersBackst...
- Spring Boot通过@EnableCaching注解开启全局服务缓存功能!
-
Caching缓存缓存在现代应用中无处不在,它为服务的高可用提供了很大的帮助。Spring框架提供了对缓存的支持。SpringBoot通过@EnableCaching注解开启全局服务缓存功能。对于某...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
面试官:git pull是哪两个指令的组合?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git 执行pull错误如何撤销 git pull fail
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)