文档章节

Spring Boot cache backed guava/caffeine

Geek-S
 Geek-S
发布于 2017/04/10 14:51
字数 291
阅读 305
收藏 2

    Spring Boot提供了spring-boot-starter-cache,支持多个缓存实现,如EHCache,Redis,GUAVA etc...,此处以轻量GUAVA为例:

一. 基本使用

0. 首先需要加入依赖,版本根据自己需求指定

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-cache</artifactId>
	<version>${v}</version>
</dependency>
<dependency>
	<groupId>com.google.guava</groupId>
	<artifactId>guava</artifactId>
	<version>${v}</version>
</dependency>

1. 开启缓存,在Application类加入@EnableCaching

2. 通过@Cacheable使用缓存

@Cacheable("{cacheNames}")
public Object needCache() {
	return ...;
}

 

二. 指定缓存参数[以过期时间为例,不同的数据类型要求的缓存时间不同]

Spring boot提供基于application.xx的配置

spring.cache.type=GUAVA
spring.cache.cache-names=cacheName
# 参数参考com.google.common.cache.CacheBuilderSpec
spring.cache.guava.spec=expireAfterWrite=7m

这种配置方式,只能提供一种策略的缓存(如果有直接基于配置配置文件的多种策略配置,请留言),如果不同缓存策略需要通过自定义配置:

@Configuration
public class CacheConfig {

	/**
	 * Define cache strategy
	 * 
	 * @return CacheManager
	 */
	@Bean
	public CacheManager cacheManager() {
		SimpleCacheManager simpleCacheManager = new SimpleCacheManager();
		List<Cache> caches = new ArrayList<>();

		# 缓存5min后失效
		caches.add(new GuavaCache("{cacheName}",
				CacheBuilder.newBuilder().expireAfterAccess(5, TimeUnit.MINUTES).build()));

		simpleCacheManager.setCaches(caches);

		return simpleCacheManager;
	}

}

 

配置完成发现spring推荐使用caffeine取代guava,所以改为使用caffeine作为实现。

 

PS: spring-gs-cachingcache-store-configuration-caffeineben-manes/caffeine

© 著作权归作者所有

共有 人打赏支持
Geek-S
粉丝 11
博文 77
码字总数 18976
作品 0
大兴
程序员
spring boot caffeine

spring 5中取消了Guava cache作为本地缓存,推荐使用 caffeine. 具体原因参见官网测试参数。 代码:https://gitee.com/emperors/spring-boot-integration.git...

翱翔fly
2017/10/24
0
0
Java 缓存系统 - JetCache

JetCache 是一个基于 Java 的缓存系统封装,提供统一的 API 和注解来简化缓存的使用。当前有四个实现,、(此部分未开源)、 (in memory) 和一个简易的 (in memory)。 主要特性: 通过统一的...

areyouok
01/23
0
0
Spring Boot Cache + Caffeine缓存

Caffeine和Spring Boot集成 Caffeine是使用Java8对Guava缓存的重写版本,在Spring Boot 2.0中将取代Guava。如果出现Caffeine,CaffeineCacheManager将会自动配置。使用spring.cache.cache-na...

xiaolyuh
2017/12/13
0
0
阿里巴巴开源的通用缓存访问框架JetCache介绍

JetCache是由阿里巴巴开源的通用缓存访问框架,如果你对Spring Cache很熟悉的话,请一定花一点时间了解一下JetCache,它更好用。 JetCache提供的核心能力包括: 提供统一的,类似jsr-107风格...

黄理
04/24
0
0
bucket4j-spring-boot-starter小试牛刀

序 本文主要研究一下如何使用bucket4j-spring-boot-starter进行限流 maven 配置 开启缓存 application.yml 这里设置了名为buckets的缓存,过期时间为1h,容量为1000000 设置的rate-limits每1...

go4it
09/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Go interface{} to string

package mainimport "fmt"func main() {var a interface{}a = "dsadjaldaldad"var b stringb = a.(string) // 话说,用人话说的话,这叫什么操作?fmt.Println(a, b)}...

taadis
2分钟前
0
0
数据库防火墙

数据库防火墙顾名思义是一款数据(库)安全设备,从防火墙这个词可以看出,其主要作用是做来自于外部的危险隔离。换句话说,数据库防火墙应该在入侵在到达数据库之前将其阻断,至少需要在入侵...

突突突酱
11分钟前
0
0
RDBMS 关系型数据库与 NoSQL 全面比较

随着互联网的不断发展,各种类型的应用层出不穷,所以导致在这个云计算的时代,对技术提出了更多的需求,主要体现在下面这四个方面: 低延迟的读写速度:应用快速地反应能极大地提升用户的满...

PeakFang-BOK
20分钟前
0
0
徒弟做了一个Python的实战小项目——银行系统

国际惯例:实践是检验真理的唯一标准。 众所周知,在编程过程中理论知识再充实也需要通过项目的炼金石。下面给大家看一下我徒弟做的一个小项目实战要求,是做一个银行系统,就是我们去银行办...

无也Python
26分钟前
1
0
vue.js响应式原理解析与实现

从很久之前就已经接触过了angularjs了,当时就已经了解到,angularjs是通过脏检查来实现数据监测以及页面更新渲染。之后,再接触了vue.js,当时也一度很好奇vue.js是如何监测数据更新并且重新...

peakedness丶
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部