Ehcache 快速学习并使用

一,ehcache简介

     Ehcache主要是一种广泛使用的开源java分布式缓存。主要面向通用的缓存,java EE 和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常 等处理程序。主要特点,快速,简单,多种缓存策略。

 

所需jar包(ehcache.jar,依赖jar包 slf4j.jar)

maven 项目 pom.xml

        <dependency>
			<groupId>org.ehcache</groupId>
			<artifactId>ehcache</artifactId>
			<version>version</version>
		</dependency>

 

二,了解 ehcache 不同模式下的生命周期

1.内存存储(堆缓存,堆外缓存)

    /**
	 * 内存存储 生命周期
	 * 
	 * @return 存儲内容
	 */
	public UserManagedCache<Long, String> userManagedCacheInit() throws Exception {

		// 实例化 UserManagedCache操作
		// UserManagedCacheBuilder.newUserManagedCacheBuilder(key,value)两个参数缓存存储的key和value
		// withEventExecutors 提供有序无序事件传递
		// withEventListeners 提供监听配置
		// heap() 第一个参数是这堆上准许的条目 也可以设置单位(G,MB,KB,B),第二个是超出之后如何执行 ,详情请查看官方文档
		// 如果你不想用 heap() 也可以使用“堆外” offheap() 如果使用“堆外”需要定义资源池大小
		UserManagedCache<Long, String> userManagedCache = UserManagedCacheBuilder
				.newUserManagedCacheBuilder(Long.class, String.class)
				.withEventExecutors(Executors.newSingleThreadExecutor(), Executors.newFixedThreadPool(5))
				.withEventListeners(CacheEventListenerConfigurationBuilder
						.newEventListenerConfiguration(ListenerObject.class, EventType.CREATED, EventType.UPDATED)
						.asynchronous().unordered())
				.withResourcePools(ResourcePoolsBuilder.newResourcePoolsBuilder().heap(3, EntryUnit.ENTRIES).offheap(10, MemoryUnit.MB))
				.build(false);

		// 实例化UserManagedCache 的时候如果 build 设置false则必须执行init()操作
		userManagedCache.init();

		// 缓存内容
		userManagedCache.put(1L, "Ehcache 用户管理缓存1");
		userManagedCache.put(2L, "Ehcache 用户管理缓存2");
		userManagedCache.put(3L, "Ehcache 用户管理缓存2");
		// 释放缓存资源 《注: 使用完成后在释放资源》
		// userManagedCache.close();

		// 返回状态
		// userManagedCache.getStatus();
		return userManagedCache;
	}

 

2 . 磁盘缓存

    /**
	 * 磁盘存 储持久生命周期
	 * 
	 * @return 存儲内容
	 */
	public PersistentUserManagedCache<Long, String> persistentUserManagedCacheInit() throws Exception {
		// 创建本地磁盘存储 服务
		LocalPersistenceService localPerisitenceService = new DefaultLocalPersistenceService(
				new DefaultPersistenceConfiguration(new File("E:\\a", "myUserData")));
		// 实例化 PersistentUserManagedCache
		// with(new
		// UserManagedPersistenceContext<Long,String>("cache-name",本地磁盘存储服务对象)将持久性服务传递给构造器以及缓存名称
		// disk() 第一个参数磁盘上准许存储的最大条目 或者 大小,第二个参数是单位,第三个参数是boolean类型如果设置true
		// 则池是持久的,如果不写参数则默认false 不持久
		PersistentUserManagedCache<Long, String> cache = UserManagedCacheBuilder
				.newUserManagedCacheBuilder(Long.class, String.class)
				.with(new UserManagedPersistenceContext<Long, String>("cache-name", localPerisitenceService))
				.withEventExecutors(Executors.newSingleThreadExecutor(), Executors.newFixedThreadPool(5))
				.withEventListeners(CacheEventListenerConfigurationBuilder
						.newEventListenerConfiguration(ListenerObject.class, EventType.CREATED, EventType.UPDATED)
						.asynchronous().unordered())
				.withResourcePools(ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10L, EntryUnit.ENTRIES).offheap(5, MemoryUnit.MB).disk(10L,
						MemoryUnit.MB))
				.build(false);

		// 实例化cache 的时候如果 build 设置false则必须执行init()操作
		cache.init();

		// 使用缓存工作
		cache.put(42L, "磁盘存 储持久生命周期42");
		cache.put(43L, "磁盘存 储持久生命周期43");

		// 关闭缓存不会删除磁盘上的数据
		// cache.close();

		// 要在关闭后执行此操作删除磁盘的上缓存数据 销毁全部,
		// destroyCache(String CacheName) 指定销毁
		// cache.destroy();

		// 完成后停止持久化操作
		// localPerisitenceService.stop();

		return cache;
	}

 

源码地址 : https://pan.baidu.com/s/1boP4fWb

转载于:https://my.oschina.net/u/3626237/blog/1548573

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值