OL.FrameCore.Infrastructure/Cache/CacheManager.cs

(开头部分) 6KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OL.FrameCore.Infrastructure.Cache
{
    public class CacheManager
    {
        static object lockObj = new object();
        static Dictionary<string, CacheModel> cacheDatas = new Dictionary<string, Cache.CacheModel>();

        /// <summary>
        /// 获取缓存
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="key"></param>
        /// <param name="func"></param>
        /// <param name="cacheTime">缓存时间(秒),默认60秒</param>
        /// <returns></returns>
        public static T GetCache<T>(string key, Func<T> func, int cacheTime = 60)
        {
            CacheModel cacheData = null;
            if (cacheDatas.ContainsKey(key))
            {
                cacheData = cacheDatas[key];
                if (DateTime.Now <= cacheData.ExpireTime)
                {
                    return (T)cacheData.Data;
                }
                else
                {
                    lock (lockObj)
                    {
                        var data = func();
                        cacheData.Data = data;
                        cacheData.CreateTime = DateTime.Now;
                        cacheData.ExpireTime = DateTime.Now.AddSeconds(cacheTime);
                        return data;
                    }
                }
            }
            else
            {
                lock (lockObj)
                {
                    var data = func();
                    cacheData = new CacheModel
                    {
                        Key = key,
                        Data = data,
                        CreateTime = DateTime.Now,
                        ExpireTime = DateTime.Now.AddSeconds(cacheTime)
                    };
                    cacheDatas.Add(key, cacheData);
                    return data;
                }
            }
        }
后面还有 151 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。