SpringBoot入门到精通-基于Google Guava Cache Util工具类实现本地缓存设置过期时间

因为功能比较小,不值当的引入redis,生产的话也会增加部署复杂度,于是想实现类似redis失效时间的功能,

百度之,发现Guava Cache可以实现,但是多数是跟springboot 集成的,找了很久找到一个Util类代码如下:

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

import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;

/**
 *      内存缓存工具类
 * @author liuxi
 * @info 2019-10-17 14:38 liuxi
 *
 */
public class GuavaCacheUtils {
    public static final String TOKEN_PREFIX = "token_";
    /**
     *       过期时间12小时
     * @info 2019-10-17 14:28 liuxi
     * 使用了LRU算法
     * @param null
     */
    private static LoadingCache localcache = CacheBuilder.newBuilder().initialCapacity(1000).maximumSize(10000).expireAfterAccess(2, TimeUnit.HOURS).build(new CacheLoader() {
        // 如果 get取值的时候没有值,默认调用这个方法返回值
        @Override
        public Object load(Object o) throws Exception {
            return "null";
        }
    });

    public static void setKey(String key, String value) {
        localcache.put(key, value);
    }



    public static String getKey(String key) {
        String value = null;
        try {
            value = (String) localcache.get(key);
            if ("null".equals(value)) {
                value = null;
            }
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        return value;
    }
}

 

引入maven依赖


   com.google.guava
   guava
   26.0-jre

注意版本,低版本会报错

 

官方使用文档

https://github.com/google/guava/wiki/CachesExplained

你可能感兴趣的:(SpringBoot入门到精通-基于Google Guava Cache Util工具类实现本地缓存设置过期时间)