GuavaUtil.java 2.63 KB
package org.nafmii.common.utils;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import lombok.Synchronized;

import java.util.concurrent.TimeUnit;

/**
 * @Author: zjh
 * @Date: 2020/7/8  13:28
 * @Description:
 */
public class GuavaUtil {

    private  static Cache<String, Object> guavaCache;
    private  static Cache<String, Object> guavaCacheForFaceData;

    public GuavaUtil() {
    }
    /**
     * 跟踪连缓存
     * @return
     */
    public static Cache<String, Object> getGuavaCache() {
        if (guavaCache == null) {
            guavaCache = CacheBuilder.newBuilder().concurrencyLevel(10)
                    // 存活时间 10 分钟
                    .expireAfterWrite(10, TimeUnit.MINUTES).maximumSize(100000000).build();
        }
        return guavaCache;
    }
    /**
     *
     * @return
     */
    public static Cache<String, Object> getGuavaCacheForFaceData() {
        if (guavaCacheForFaceData == null) {
            guavaCacheForFaceData = CacheBuilder.newBuilder().concurrencyLevel(10)
                    .expireAfterWrite(1, TimeUnit.MINUTES).maximumSize(100000000).build();
        }
        return guavaCacheForFaceData;
    }

    @Synchronized
    public static Object putTrackGuava(String str, Object obj){
        if (guavaCache == null) {
            guavaCache = CacheBuilder.newBuilder().concurrencyLevel(10)
                    .expireAfterWrite(1, TimeUnit.MINUTES).maximumSize(100000000).build();
        }
        return guavaCache.asMap().put(str,obj);
    }

    public static Object getTrackGuava(String str){
        if (guavaCache == null) {
            guavaCache = CacheBuilder.newBuilder().build();
        }
        return guavaCache.asMap().get(str);
    }

    public static void deleteTrackGuava(String str){
        guavaCache =CacheBuilder.newBuilder().build();
        guavaCache.invalidate(str);
    }
    @Synchronized
    public static Object putFaceGuava(String str, Object obj){
        return guavaCacheForFaceData.asMap().put(str,obj);
    }

    public static Object getFaceGuava(String str){
        return guavaCacheForFaceData.asMap().get(str);
    }

    public static void deleteFaceGuava(String str){
        guavaCacheForFaceData.invalidate(str);
    }

    public static void main(String[] args) {
//        Cache<String, Object> guavaCache = GuavaUtil.getGuavaCache();
//
//        guavaCache.asMap().put("asd","asd");
//        String asd = (String) guavaCache.asMap().get("asd");
//        System.out.println(asd);
        GuavaUtil.putTrackGuava("test","1");
        String test = (String) GuavaUtil.getTrackGuava("test");
        System.out.println(test);
    }
}