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 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
