All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.hugh.support.cache.GuavaCache Maven / Gradle / Ivy

The newest version!
package com.github.hugh.support.cache;

import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;

import java.util.concurrent.TimeUnit;

/**
 * 提供Goole Guava 缓存 {@link LoadingCache} 实例
 * 

它还提供了以下方法进行参数配置

*
    *
  • {@link CacheBuilder#newBuilder()}有以下参数可进行配置
  • *
  • {@link CacheBuilder#initialCapacity(int)}缓存容器的初始容量}
  • *
  • {@link CacheBuilder#maximumSize(long)}设置缓存最大容量,超过之后就会按照LRU最近虽少使用算法来移除缓存项}
  • *
  • {@link CacheBuilder#expireAfterWrite(long, TimeUnit)} 设置缓存n秒后没有创建/覆盖时会被回收、第一参数:时间长度,第二参数:时间单位}
  • *
  • {@link CacheBuilder#expireAfterAccess(long, TimeUnit)} (long, TimeUnit)} 设置缓存n秒后没有读写就会被回收、第一参数:时间长度,第二参数:时间单位}
  • *
  • {@link CacheBuilder#initialCapacity(int)}缓存容器的初始容量}
  • *
* * @author hugh * @since 1.3.2 */ public class GuavaCache { /** * 创建本地谷歌缓存 * * @param key * @param value * @param cacheLoader build方法中可以指定CacheLoader,在缓存不存在时通过CacheLoader的实现自动加载缓存 * @return LoadingCache */ public static LoadingCache create(CacheLoader cacheLoader) { return CacheBuilder.newBuilder().build(cacheLoader); } /** * 创建本地谷歌缓存 * * @param key * @param value * @param initialCapacity 缓存容器的初始容量 * @param maximumSize 设置缓存最大容量,超过之后就会按照LRU最近虽少使用算法来移除缓存项 * @param expireAfterWrite 设置缓存n秒后没有创建/覆盖时会被回收、单位:秒 * @param cacheLoader build方法中可以指定CacheLoader,在缓存不存在时通过CacheLoader的实现自动加载缓存 * @return LoadingCache */ public static LoadingCache create(int initialCapacity, int maximumSize, int expireAfterWrite, CacheLoader cacheLoader) { return CacheBuilder.newBuilder() .initialCapacity(initialCapacity) .maximumSize(maximumSize) .expireAfterWrite(expireAfterWrite, TimeUnit.SECONDS) .build(cacheLoader); } /** * 创建本地谷歌缓存 * * @param key * @param value * @param expireAfterAccess 设置缓存n秒后没有读写就会被回收、单位:秒 * @param cacheLoader build方法中可以指定CacheLoader,在缓存不存在时通过CacheLoader的实现自动加载缓存 * @return LoadingCache */ public static LoadingCache create(int expireAfterAccess, CacheLoader cacheLoader) { return create(expireAfterAccess, TimeUnit.SECONDS, cacheLoader); } /** * 创建本地谷歌缓存、自定义设置超时时间单位 * * @param expireAfterAccess 设置缓存n秒后没有读写就会被回收、单位:秒 * @param timeUnit 时间单位 {@link TimeUnit} * @param cacheLoader build方法中可以指定CacheLoader,在缓存不存在时通过CacheLoader的实现自动加载缓存 * @param key * @param value * @return LoadingCache * @since 1.5.10 */ public static LoadingCache create(int expireAfterAccess, TimeUnit timeUnit, CacheLoader cacheLoader) { return CacheBuilder.newBuilder().expireAfterAccess(expireAfterAccess, timeUnit) .build(cacheLoader); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy