C# 在内存中缓存查找表的最佳方法
我有几百个查找表要缓存在内存中。 我已经将它们拖放到Linq到sql实体映射器上。我想一定有更好的(Genric)方法来读取内存中的数据,而不是使用“HttpContext.Current.Cache”对象加载每个表。C# 在内存中缓存查找表的最佳方法,c#,linq,caching,C#,Linq,Caching,我有几百个查找表要缓存在内存中。 我已经将它们拖放到Linq到sql实体映射器上。我想一定有更好的(Genric)方法来读取内存中的数据,而不是使用“HttpContext.Current.Cache”对象加载每个表。 所有查找表都以“L_3;”开头,后跟内容类型的名称 如有任何评论,将不胜感激 最好的10 GB的数据太多,无法缓存 使用.NET(可能是System.Cache命名空间)自己的缓存。如果您曾经为移动应用程序等编写Web API,您将能够重用缓存代码 ASP.NET缓存使用薄弱环节
所有查找表都以“L_3;”开头,后跟内容类型的名称 如有任何评论,将不胜感激
最好的10 GB的数据太多,无法缓存 使用.NET(可能是System.Cache命名空间)自己的缓存。如果您曾经为移动应用程序等编写Web API,您将能够重用缓存代码 ASP.NET缓存使用薄弱环节,每当需要内存时,偶尔使用的缓存项都将被删除 如果您想要分布式缓存或需要缓存的持久性,请使用Redis 在存储过程中使用SQLServer自己的内存表比使用实体框架(但不是Redis)要好 像这样编写您的服务层代码(此代码也可以与您的Web API一起重用)
private IList GetAll()
{
//在缓存中查找并返回
//如果上一步在缓存中找不到数据,则加载数据
//将数据存储在此特定查找的缓存中
//返回数据
}
我希望这会有所帮助 像Redis这样的高速内存缓存可能是一个更好的方法。这会比微软自己的磁盘缓存更好吗?这个功能已经在asp.net上使用了好几年了,现在我不能说,但是我希望数百个表会给web服务器带来内存压力,这可能会抵消这个好处。我可以说Redis速度惊人,专为这类东西而设计。我的服务器上有32GB的内存,应用程序的数据需求永远不会超过10GB。因此,内存不会成为问题。我会发现很难说服管理层投资于其他技术。memorycache应该是单例的还是限定范围的?
private IList<TableName> GetAll()
{
//find in cache and return
//load data if upper step doesn't find data in cache
// store data in cache for this specific lookup
// return data
}