MemoryCache可以提供过期的项目,直到获取新数据不成功?

时间:2016-05-02 21:11:41

标签: c# .net caching memorycache

我使用.NET MemoryCache类进行缓存。

我有以下要求:

  1. 在' x'之后过期缓存条目时间,但不要驱逐它。
  2. 如果在此' x'之后有来自缓存条目的请求一段时间,尝试获取新数据。
    • 但是,如果获取新数据失败,请提供过期的缓存项(由于尚未驱逐,它仍在缓存中)。
    • 如果获取新数据成功,则更新缓存中的项目并重置其到期计时器。
  3. 这可以使用MemoryCache吗?

1 个答案:

答案 0 :(得分:1)

  

这可以使用MemoryCache吗?

不,我担心框架中内置的MemoryCache类并不能提供您正在寻找的功能。您可能需要自己实现它。 MemoryCache类为您提供了一项功能,当您将项目的到期时间设置为x时间与当前时间相比时,在此x时间之后您将不会能够获取缓存的项目,因为它将被驱逐,如果您尝试在此x时间之前获得该项目,您可能会成功或不成功:如果您的应用程序可能仍然从缓存中逐出该项目例如,一直在消耗大量内存。

所以底线是这样的:如果你已经将一些项目放入MemoryCache,那么绝对不能保证你能够在稍后阶段在MemoryCache中找到这个项目。顺便提一下缓存的全部内容:您应该只将数据数据存储在此类缓存中,如果在此缓存中不可用,则可以使用其他方法进行检索。通常,那些检索数据的其他方法包括进行更昂贵的数据库或HTTP远程调用。