缓存一个数据列表asp.net c#

问题描述:

我想实现从db中拉出的列表的缓存。我有一个看看这个:缓存一个数据列表asp.net c#

How can I cache objects in ASP.NET MVC?

我在我的代码有这样的:

var addresses = repository.GetAllAddresses();//returns IQueryable<string> 

使用答案的问题上面,我怎么可以缓存这个?我已经创建了类CacheExtensions,但不知道该从哪里去。

一旦你有扩展方法,它是一个简单的使用它的事情(不要忘记把你定义的GetOrStore方法的静态类放入作用域,方法是向包含它的命名空间添加using指令,否则你不会能够看到GetOrStore<T>扩展方法):

IEnumerable<string> addresses = HttpRuntime 
    .Cache 
    .GetOrStore<IEnumerable<string>>(
     "addresses", 
     () => repository.GetAllAddresses().ToArray() 
); 

注意事项:

  • 我们使用的“地址”作为缓存键,因此结果将此项下储存。
  • 我们在IQueryable<string>上调用.ToArray(),以便热切地获取地址并将结果存储到缓存中而不是查询。