一、简单介绍
A high performance thread-safe map that expires entries!
应用程序中引入缓存能够降低数据库方面的压力,比如常用的Redis缓存中间件。但是在有些小场景下,使用Redis不仅增加了系统的复杂性和不确定性,还有点大材小用。而ExpiringMap适合缓存那些被频繁查询以及数据量不是很大的数据信息。它具有如下功能:
- 可以设置存储元素的过期时间;
- 可设置最大的数据元素存储量;
- 设置过期协议,过期协议分有两种:ExpirationPolicy.CREATED和ExpirationPolicy.ACCESSED。它俩之间的区别:前者在每次更新元素时,过期时间同时清零;后者是在每次访问元素时,过期时间同时清零。
二、项目地址
https://github.com/jhalterman/expiringmap
三、使用示例
- 首先引入maven依赖:
<dependency>
<groupId>net.jodah</groupId>
<artifactId>expiringmap</artifactId>
<version>0.5.9</version>
</dependency> - 然后实现缓存功能的代码如下:
private static final ExpiringMap<String,JSONObject> 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缓存方式ExpiringMap
本文链接:https://blog.quwenai.cn/post/8368.html
版权声明:本文不使用任何协议授权,您可以任何形式自由转载或使用。






还没有评论,来说两句吧...