C# 在内存中缓存查找表的最佳方法

C# 在内存中缓存查找表的最佳方法,c#,linq,caching,C#,Linq,Caching,我有几百个查找表要缓存在内存中。 我已经将它们拖放到Linq到sql实体映射器上。我想一定有更好的(Genric)方法来读取内存中的数据,而不是使用“HttpContext.Current.Cache”对象加载每个表。 所有查找表都以“L_3;”开头,后跟内容类型的名称 如有任何评论,将不胜感激 最好的10 GB的数据太多,无法缓存 使用.NET(可能是System.Cache命名空间)自己的缓存。如果您曾经为移动应用程序等编写Web API,您将能够重用缓存代码 ASP.NET缓存使用薄弱环节

我有几百个查找表要缓存在内存中。 我已经将它们拖放到Linq到sql实体映射器上。我想一定有更好的(Genric)方法来读取内存中的数据,而不是使用“HttpContext.Current.Cache”对象加载每个表。
所有查找表都以“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 
}