使用 Spring缓存抽象 支持 EhCache 和 Redis 混合部署

本文介绍了如何在Spring框架中使用注释驱动的缓存技术,结合EhCache和Redis实现混合部署。内容涵盖EhCache和Redis的配置、Maven依赖、缓存应用,以及如何在实际应用中使用和测试混合部署的缓存系统。
摘要由CSDN通过智能技术生成

概述

在分布式 web 项目中,通常即需要本地缓存提高程序性能,也需要共享缓存在多机之间交换数据。本文介绍了使用Spring缓存抽象机制混合部署的方法。

Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,使用Spring缓存抽象,程序员仅需要使用少量的注释就实现了对象的缓存,不必了解复杂的面向对象的编程(AOP)技术。

Spring 的缓存技术相当的灵活性,不仅能够使用 SpEL(Spring Expression Language)来定义缓存的 key 和各种 condition, 而且支持 Ehcache 2.x, Gemfire cache, Caffeine, Guava caches 以及 JSR-107 兼容的缓存 (例如 Ehcache 3.x)产品。

本文第一部分简单介绍注释驱动的缓存技术,第二部分介绍使用 Redis 做共享缓存,第三部分介绍混合部署。

第一部分:注释驱动的缓存技术简介

这里假设你对Java缓存有一些了解,这里主要介绍 Spring4,EhCache3 的配置方法。其他配置请参考 Spring官网(英文)文档

1. 配置

配置类如下:

@Configuration
@EnableCaching
public class CacheConfig {

	// http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html#cache-store-configuration-jsr107
	//http://stackoverflow.com/questions/39386830/using-ehcache-3-with-spring-annotations-not-using-spring-boot
	
	@Bean
	public JCacheCacheManager jcacheCacheManager(){
		JCacheCacheManager cm = new JCacheCacheManager();
		cm.setCacheManager(jsr107cacheManager());
		return cm;
	}
	
	@Bean
	public CacheManager jsr107cacheManager(){
		//http://www.ehcache.org/documentation/3.1/107.html
		CachingProvider provider = Caching.getCachingProvider();
		CacheManager cacheManager = provider.getCacheManager();
	    
	    	MutableConfiguration<Long, String> configuration =
	        	new MutableConfiguration<Long, String>()
	            		// Cannot set type for store! this may be a bug in spring or ehCache
	        		//.setTypes(Long.class, String.class)
	        		.setStoreByValue(false) 
	        	.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.ONE_MINUTE));
	    	cacheManager.createCache("foo", configuration);
		
		return cacheManager;
	}
	
}

@Configuration 表示这是一个

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值