369c730f创建于 2023年8月23日历史提交
<?php

namespace Module\Vendor\Util;

use Illuminate\Support\Facades\Cache;

/**
 * Class CacheUtil
 * @package Module\Vendor\Cache
 */
class CacheUtil
{
    /**
     * @return \Illuminate\Cache\Repository
     */
    private static function client()
    {
        return Cache::store();
    }

    public static function rememberForever($key, $callback)
    {
        return self::client()->rememberForever($key, $callback);
    }

    public static function remember($key, $seconds, $callback)
    {
        return self::client()->remember($key, intval($seconds / 60), $callback);
    }

    public static function forget($key)
    {
        return self::client()->forget($key);
    }

    public static function get($key)
    {
        return self::client()->get($key);
    }

    public static function put($key, $value, $seconds)
    {
        self::client()->put($key, $value, ceil($seconds / 60));
    }

    public static function forever($key, $value)
    {
        self::client()->forever($key, $value);
    }

    public static function executeInterval($key, $callback, $minutes = 5)
    {
        $cacheKey = 'Vendor:CacheInterval:' . $key;
        $c = intval(self::get($cacheKey));
        if ($c <= 0 || $c < time()) {
            self::put($cacheKey, time() + $minutes * 60, $minutes * 60);
            call_user_func($callback);
        }
    }
}