ExpiringMap:轻量级的Java缓存方式

一、ExpiringMap

具有高性能、低开销、零依赖、线程安全、使用 ConcurrentMap 的实现过期 entries 等优点。
其主要特点包括:过期策略、可变有效期、最大尺寸、侦听器过期、延迟输入加载、过期自省等。

二、基本功能

1、可设置 Map 中的 Entry 在一段时间后自动过期。

2、可设置 Map 最大容纳值,当到达 Maximum size 后,再次插入值会导致 Map 中的第一个值过期。

3、可添加监听事件,在监听到 Entry 过期时调度监听函数。

4、可以设置懒加载,在调用 get() 方法时创建对象。

三、使用方式

1、pom.xml 中添加依赖

 
     net.jodah
     expiringmap
     0.5.8
 

2、创建静态方法

public class CacheUtils {
    /**
     * 缓存用户信息
     */
    public static final ExpiringMap USER_INFO_MAP = ExpiringMap.builder()
              .maxSize(1000)
              .expiration(12, TimeUnit.HOURS)
              .variableExpiration()
              .expirationPolicy(ExpirationPolicy.ACCESSED)
              .build();

    /**
     * 缓存车牌颜色信息
     */
    public static final ExpiringMap PLATE_COLOR_MAP = ExpiringMap.builder()
            .maxSize(1000)
            .expiration(24, TimeUnit.HOURS)
            .variableExpiration()
            .expirationListener((key,value) -> {
                System.out.println("key:" + key + "已过期……");
            })
            .expirationPolicy(ExpirationPolicy.ACCESSED)
            .build();
}

① maxSize:Map存储的最大值,类似队列,容量固定,当操作map容量超出限制时,最开始的元素就会依次过期,只保留最新的;

② expiration:过期时间;

expirationListener:过期监听;

expirationPolicy:过期策略,包括 ExpirationPolicy.ACCESSED 和 ExpirationPolicy.CREATED 两种;

1)ExpirationPolicy.ACCESSED :每进行一次访问,过期时间就会自动清零,重新计算;

2)ExpirationPolicy.CREATED:在过期时间内重新 put 值的话,过期时间会清理,重新计算;

3、测试

public class TestMain {

    public static void main(String[] args) {
        //存入元素
        CacheUtils.USER_INFO_MAP.put("00001","zhangsan");

        //取出元素
        String userName = CacheUtils.USER_INFO_MAP.get("00001");
        System.out.println("userName:" + userName);

        //查询剩余过期时间
        long expectedExpiration = CacheUtils.USER_INFO_MAP.getExpectedExpiration("00001");
        System.out.println("剩余过期时间:" + expectedExpiration);

        //查看设置的过期时间
        long expiration = CacheUtils.USER_INFO_MAP.getExpiration("00001");
        System.out.println("设置的过期时间:" + expiration);

    }
}

结果打印:
userName:zhangsan
剩余过期时间:43199999
设置的过期时间:43200000

ExpiringMap:轻量级的Java缓存方式_第1张图片

你可能感兴趣的:(JAVA基础,缓存,java,开发语言)