ExpiringMap学习总结

一、ExpiringMap简介

ExpiringMap是一个轻量级的Java缓存方式

针对一些小体量的项目,存储的数据量也不是很大(如校验码)的情况下,使用Redis会增加系统的复杂性和维护难度。它的功能和Redis类似。

ExpiringMap特点:可设置存储元素的过期时间,可设置最大的数据元素存储量,可添加监听事件和设置懒加载等。

二、ExpiringMap 使用示例

1、导入ExpiringMap依赖,可到Maven仓库选择需要的依赖版本:

<dependency>
  <groupId>net.jodah</groupId>
  <artifactId>expiringmap</artifactId>
  <version>0.5.8</version>
</dependency>

2、初始化一个ExpiringMap(配置过期时间、过期协议等)

    /** maxSize: 设置最大值,添加第11个entry时,会导致第1个立马过期(即使没到过期时间)
     * expiration:设置每个key有效时间10s, 如果key不设置过期时间,key永久有效。
     * variableExpiration: 允许更新过期时间值,如果不设置variableExpiration,不允许后面更改过期时间,一旦执行更改过期时间操作会抛异常UnsupportedOperationException
     * policy-策略:
     * CREATED: 只在put和replace方法清零过期时间
     * ACCESSED: 在CREATED策略基础上增加, 在还没过期时get方法清零过期时间。
     * 清零过期时间也就是重置过期时间,重新计算过期时间.
     * 注意: 在创建map时,指定的那些参数如过期时间和过期策略都是全局的, 对map中添加的每一个entry都适用.
     * 在put一个entry键值对时可以对当前entry 单独设置 过期时间、过期策略,只对当前这个entry有效.
     */
   private  final static ExpiringMap<String, String> map = ExpiringMap.builder()
            .maxSize(10)
            // 设置过期时间60毫秒
            .expiration(60, TimeUnit.MILLISECONDS)
            .variableExpiration()
            // 设置过期协议
            .expirationPolicy(ExpirationPolicy.CREATED).build();

3、ExpiringMap实例

 public static void main(String[] args) {
        map.put("token", "lkj2412lj1412412nmlkjl2n34l23n4");
        // 模拟线程等待61毫秒...
        try {
            Thread.sleep(61);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("token ===> " + map.get("token"));
    }


【控制台输出】:token ===> null

4、使用ExpiringMap存和取

// 存入一个字符串对象
map.put("token", "lkj2412lj1412412nmlkjl2n34l23n4");
// 取出存入的对象值
String token = map.get("token");
posted @ 2023-03-10 10:41  奋--斗  阅读(276)  评论(0编辑  收藏  举报