一个轻量的java缓存方式ExpiringMap

一、简单介绍

A high performance thread-safe map that expires entries!

应用程序中引入缓存能够降低数据库方面的压力,比如常用的Redis缓存中间件。但是在有些小场景下,使用Redis不仅增加了系统的复杂性和不确定性,还有点大材小用。而ExpiringMap适合缓存那些被频繁查询以及数据量不是很大的数据信息。它具有如下功能:

  • 可以设置存储元素的过期时间;
  • 可设置最大的数据元素存储量;
  • 设置过期协议,过期协议分有两种:ExpirationPolicy.CREATED和ExpirationPolicy.ACCESSED。它俩之间的区别:前者在每次更新元素时,过期时间同时清零;后者是在每次访问元素时,过期时间同时清零。

二、项目地址

https://github.com/jhalterman/expiringmap

三、使用示例

  • 首先引入maven依赖:

  	net.jodah
  	expiringmap
  	0.5.9
  • 然后实现缓存功能的代码如下:
private static final ExpiringMap 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)