C# 在应用程序外部缓存数据
我试图缓存从SQL服务获取的数据,我尝试使用System.Runtime.Caching中的Memory cache类,但每次退出应用程序时,缓存都会被清空 所以我的问题是,有没有一种方法可以缓存我的数据,这样即使我的应用程序重新启动,我也可以获取它 我正在使用Biztalk中的服务,因此应用程序可以在需要时启动,但SQL轮询需要的时间太长 以下是im测试的代码:C# 在应用程序外部缓存数据,c#,.net,caching,C#,.net,Caching,我试图缓存从SQL服务获取的数据,我尝试使用System.Runtime.Caching中的Memory cache类,但每次退出应用程序时,缓存都会被清空 所以我的问题是,有没有一种方法可以缓存我的数据,这样即使我的应用程序重新启动,我也可以获取它 我正在使用Biztalk中的服务,因此应用程序可以在需要时启动,但SQL轮询需要的时间太长 以下是im测试的代码: const string KEY = "key"; static void Main(string[] args)
const string KEY = "key";
static void Main(string[] args)
{
MemoryCache cache = MemoryCache.Default;
Cache(cache);
Get(cache);
Console.Read();
}
private static void Get(MemoryCache cache)
{
string result = cache.Get(KEY) as string;
Console.WriteLine(result);
}
private static void Cache(MemoryCache cache)
{
CacheItemPolicy policy = new CacheItemPolicy();
policy.AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(10);
bool res = cache.Add(KEY, "This was Cached", policy);
if (res)
Console.WriteLine("Added Succesfully");
else
Console.WriteLine("Adding Failed");
}
所以我的问题是,有没有一种方法可以缓存我的数据,这样即使我的应用程序重新启动,我也可以获取它
对。如果使用,即使应用程序重新启动,缓存也将继续存在
ObjectCache cache = System.Runtime.Caching.MemoryCache.Default;
CacheItemPolicy policy = new CacheItemPolicy
{
Priority = CacheItemPriority.NotRemovable,
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(10);
};
cache.Add(item, policy);
MSDN注意:向缓存中添加优先级为NotRemovable的条目可能会使缓存溢出无法删除的条目。缓存实现仅应为缓存项设置NotRemovable优先级,前提是它们提供了从缓存中逐出此类项并管理缓存项数量的方法
MemoryCache只在内存中存储数据。您需要一个文件缓存或数据库缓存,但框架中不存在任何文件缓存或数据库缓存。您可以尝试使用Redis()进行缓存。GIF“应用程序重新启动”表示新的进程/应用程序域,MemoryCache不可能仍然包含您以前缓存的项目,无论您如何努力缓存它们;)这适用于基于ASP.NET的应用程序。当然,如果您谈论的是一个胖客户机,那么重启应用程序就不同了,所有分配的内存都将丢失,包括缓存。但是我在ASP.NET中使用它,我可以在不丢失缓存数据的情况下重新启动应用程序。