java缓存框架Ehcache学习笔记

    今天第二个要学习的是: Ehcache缓存框架。  目标仍然是三个:  1.有什么用;   2.怎么用;   3.大致原理;

1.什么是Ehcahce:

    这个英语有些复杂看不懂了,但是这是官网给出的解释。 总之,它就是做缓存的。   缓存与内存密切相关。 我的一点理解就是: 缓存与程序在运行时都代表了进程的抽象。  对于那些具有严格结构关系的就是程序,或者说上上下文。  而对于那些结构不那么严谨的,或者相关性不强的就可以称为缓存。  它本身就是一个存储,但是由于它的速度极快。 所以用作缓存,它的出现是为了协调CPU与硬件间的速度上的巨大差距。  

    百度百科的释义是:

2.Ehcache如何使用:

  导包之类的准备操作略过,官网给出的代码:

package com.automannn;

import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;

/**
 * @author [email protected]
 * @time 2018/11/25 13:58
 */
public class Main {
    public static void main(String[] args) {
        //1.缓存管理器
        CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder()
                .withCache("preConfigured",
                        CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class,
                                ResourcePoolsBuilder.heap(100))
                                .build())
                .build(true);

        //2.缓存
        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(100)).build());

        //3.网缓存中存
        myCache.put(1L, "da one!");
        String value = myCache.get(1L);
        System.out.println(value);

        cacheManager.close();
    }
}

  运行结果:

    注意,这个环境下也是需要slf4j日志框架来支撑的。  当没有具体的日志实现时,它的核心业务逻辑任然能跑通。这是与quartz不一样的地方。

3.大致原理:

    大致原理我不想看源码了,我现在很想放纵。

    举个例子:

package com.automannn;

import java.util.HashMap;
import java.util.Map;

/**
 * @author [email protected]
 * @time 2018/11/25 14:50
 */
public class Main1 {
    public static final Map cache = new HashMap();

    public static void main(String[] args) {
        cache.put("key","hello cache!");
        String value= (String) cache.get("key");
        System.out.println(value);
    }
}

   执行结果:

     要知道,这个时候,这个变量既可以充当上下文环境,也可以充当 缓存。  效果还是很强大的。 只不过它没有一些 外延的功能。 如性能优化,存储方案的适配,不同状态存储策略等等。  加上这些应该就是一个框架了吧。  

猜你喜欢

转载自blog.csdn.net/qq_36285943/article/details/84484928