【无标题】

Ehcache使用

这里只学习Ehcache3的用法,主要是cacheManager和cache两个重要的概念,一个是缓存管理器,一个是具体的缓存
官网:Ehcache官网

CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder() 
    .withCache("preConfigured",
        CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10))) 
    .build(); 
cacheManager.init(); 

Cache<Long, String> preConfigured =
    cacheManager.getCache("preConfigured", Long.class, String.class); 

Cache<Long, String> myCache = cacheManager.createCache("myCache", 
    CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10)));

myCache.put(1L, "da one!"); 
String value = myCache.get(1L); 

cacheManager.removeCache("preConfigured"); 

cacheManager.close(); 

首先是创建缓存管理器cacheManager,这里可以使用with的方法配置很多东西,也可以直接创建cache,例如上边的例子创建了别名为preConfigured的cache项,key和value的类型也被指定了
注意cacheManager一定要初始化,初始化有两种方法,分别是

cacheManager.init(); 
CacheManagerBuilder.newCacheManagerBuilder().build(true)

使用getCache可以直接获取前边定义的cache项

Cache<Long, String> preConfigured =
    cacheManager.getCache("preConfigured", Long.class, String.class); 

当然你也可以再创建一个cache项,调用createCache方法:

Cache<Long, String> myCache = cacheManager.createCache("myCache", 
    CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder.heap(10)));

每个cache都可以配置存放缓存的位置(堆内、堆外、磁盘)
其他例子:

      PersistentCacheManager persistentCacheManager = CacheManagerBuilder.newCacheManagerBuilder()
        .withCache("threeTieredCache",
            CacheConfigurationBuilder.newCacheConfigurationBuilder(Integer.class, String.class,
                ResourcePoolsBuilder.newResourcePoolsBuilder()
                    .heap(10, EntryUnit.ENTRIES)  //堆
                    .offheap(1, MemoryUnit.MB)    //堆外
                    .disk(20, MemoryUnit.GB)      //磁盘
                )
        ).build(true);

配置堆大小:

ResourcePoolsBuilder resourcePoolsBuilder = ResourcePoolsBuilder.newResourcePoolsBuilder()
    // 堆内缓存大小
    .heap(heapCacheSize, MemoryUnit.KB)
    // 堆外缓存大小
    .offheap(offHeapCacheSize, MemoryUnit.MB)
    // 文件缓存大小
    .disk(diskCacheSize, MemoryUnit.MB);

ResourcePoolsBuilder.newResourcePoolsBuilder().heap(10)什么意思?

答:heap表示使用堆内内存,10表示只能存放put10个对象,当put第11个那么前面10个对象将有一个会被移除。

补充:

heap堆内内存

off-heap堆外内存,将你的对象从堆中脱离出来序列化,然后存储在一大块内存中,这就像它存储到磁盘上一样,但它仍然在RAM中。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值