ExpiringMap介绍
应用程序中引入缓存能够降低数据库方面的压力,比如常用的Redis缓存 中间件 。但是在有些小场景下,使用 Redis 不仅增加了系统的复杂性和不确定性,还有点大材小用。而ExpiringMap适合缓存那些被频繁查询以及数据量不是很大的数据信息。 它具有如下功能 :
- 可以设置存储元素的过期时间;
- 可设置最大的数据元素存储量;
- 设置过期协议,过期协议分有两种:ExpirationPolicy.CREATED和ExpirationPolicy.ACCESSED。它俩之间的区别:前者在每次更新元素时,过期时间同时清零;后者是在每次访问元素时,过期时间同时清零。
根据ExpiringMap的这些功能,也可以看出它能够合理的使用 Java 内存。
接下来通过代码案例来进一步揭开该 API 的神秘面纱。
代码案例
- 首先引入 maven 依赖:
<dependency>
<groupId>net.jodah</groupId>
<artifactId>expiringmap</artifactId>
<version>0.5.8</version>
</dependency>
- 然后实现缓存功能的代码如下:
private static final ExpiringMap<String, json Object> cacheMap = ExpiringMap.builder()
//设置最大的数据元素存储量
.maxSize(1000)
//设置存储元素的过期时间,比如120秒
.expiration(120, TimeUnit.SECONDS)
//设置过期协议
.expirationPolicy(ExpirationPolicy.CREATED)
.variableExpiration()
. build ();
//本地缓存存在要查询的数据,就立刻返回
if(cacheMap.containsKey(id)) {
return cacheMap.get(id);
}
//本地缓存不存在,再查询数据库,然后加入本地缓存
JSONObject json = wapOpenAppDao.queryWapOpenAppConfig(id);
cacheMap.put(id, json);
你学习到了吗?去在你所负责的项目中应用吧。
作者 :杨工,北京互联网公司在职Java开发,专注分享写作干货。关注我,留下你的点赞与评论。