package com.qy.worksheetsystem.util;

import cn.hutool.cache.CacheUtil;
import cn.hutool.cache.impl.TimedCache;
import cn.hutool.core.date.DateUnit;

/**
 * description: HutoolCacheUtils <br>
 * date: 31/1/2024 下午5:58 <br>
 * author: lhbj <br>
 * version: 1.0 <br>
 */
public class HutoolCacheUtils {

    /**
     * 默认缓存时长 单位s
     */
    private static final Long DEFAULT_TIMEOUT = DateUnit.SECOND.getMillis() * 10;
    /**
     * 默认清理间隔时间 单位s
     */
    private static final Long CLEAN_TIMEOUT = DateUnit.SECOND.getMillis() * 1;
    /**
     * 全局时间超时缓存，构造器启动每秒检测。
     */
    public static TimedCache<String, Object> timedCache = CacheUtil.newTimedCache(DEFAULT_TIMEOUT);

    static { /**启动定时任务 **/
        timedCache.schedulePrune(CLEAN_TIMEOUT);
    }

    public static void put(String key, Object value) {
        timedCache.put(key, value);
    }

    /**
     *
     * @param key *
     * @param value *
     * @param expire 过期时间 秒
     */
    public static void put(String key, Object value, Integer expire) {
        timedCache.put(key, value, DateUnit.SECOND.getMillis() * expire);
    }

    /**
     * 禁止延迟缓存 isUpdateLastAccess = false *
     * @param key
     * @param isUpdateLastAccess
     */
    public static Object get(String key, boolean isUpdateLastAccess) {
        return timedCache.get(key, isUpdateLastAccess);
    }

    public static Object get(String key) {
        return get(key, false);
    }

    public static void remove(String key) {
        timedCache.remove(key);
    }

    /**
     * 清空所有缓存
     */
    public static void clear() {
        timedCache.clear();
    }
}
