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");
古今成大事者,不唯有超世之才,必有坚韧不拔之志!