必备CacheHelper类
public class CacheHelper
{
/// <summary>
/// 构造字典型容器,用于存放缓存数据
/// </summary>
private static Dictionary<string, object> CacheDictionary = new Dictionary<string, object>();
/// <summary>
/// 添加缓存
/// </summary>
public static void Add(string key, object value)
{
CacheDictionary.Add(key, value);
}
/// <summary>
/// 获取缓存
/// </summary>
public static T Get<T>(string key)
{
return (T) CacheDictionary[key];
}
/// <summary>
/// 判断缓存是否存在
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static bool Exsits(string key)
{
return CacheDictionary.ContainsKey(key);
}
/// <summary>
/// 缓存获取方法
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key">缓存字典容器对应key</param>
/// <param name="func">委托方法 传入操作对象</param>
/// <returns></returns>
public static T GetCache<T>(string key, Func<T> func)
{
T t = default(T);
if (CacheHelper.Exsits(key))
{
//缓存存在,直接获取原数据
t = CacheHelper.Get<T>(key);
}
else
{
//缓存不存在,去生成缓存,并加入容器
t = func.Invoke();
CacheHelper.Add(key, t);
}
return t;
}
}
快速使用举例
static void Main(string[] args)
{
//不使用缓存情况
//for (int i = 1; i < 6; i++)
//{
// Console.WriteLine($"------第{i}次请求------");
// int result = DataSource.GetDataByDB(666);
// Console.WriteLine($"第{i}次请求获得的数据为:{result}");
//}
//使用缓存情况
//for (int i = 1; i < 6; i++)
//{
// Console.WriteLine($"------第{i}次请求------");
// //int result = DataSource.GetDataByDB(666);
// int result = 0;
// //key的名字一定要确保请求的准确性 DataSource GetDataByDB 666缺一不可
// string key = "DataSource_GetDataByDB_666";
// if (CacheHelper.Exsits(key))
// {
// //缓存存在,直接获取原数据
// result = CacheHelper.Get<int>(key);
// }
// else
// {
// //缓存不存在,去生成缓存,并加入容器
// result = DataSource.GetDataByDB(666);
// CacheHelper.Add(key, result);
// }
// Console.WriteLine($"第{i}次请求获得的数据为:{result}");
//}
for (int i = 1; i < 6; i++)
{
Console.WriteLine($"------第{i}次请求------");
int result = 0;
//key的名字一定要确保请求的准确性 DataSource GetDataByDB 666缺一不可
string key = "DataSource_GetDataByDB_666";
//将需要执行的获取数据操作编写成委托传入方法(重点)
//Func<int> func = new Func<int>(() => { return DataSource.GetDataByDB(666); });
result = CacheHelper.GetCache(key, () => DataSource.GetDataByDB(666));
Console.WriteLine($"第{i}次请求获得的数据为:{result}");
}
Console.ReadKey();
}