当我们有IDistributedCache时,为什么要使用IMemoryCache?

时间:2020-01-17 17:12:08

标签: .net-core

.Net Core为两个接口(MemoryCacheDistributedMemoryCache)都提供了内存中的实现,但让我们假设我们的应用程序有一个有效的IDistributedCache实现。

何时仍应使用IMemoryCache。在什么情况下,它比在分布式缓存中缓存数据更有帮助或更可取?

2 个答案:

答案 0 :(得分:2)

我正在搜索相同内容,并在github问题中找到了答案:

它们具有根本不同的语义。 MemoryCache可以存储活动对象,而分布式缓存则不能,必须将对象序列化。分布式缓存可能是开箱即用的,对其的调用可能会失败或花费很长时间,因此获取和设置应​​该是异步的,MemoryCache始终在内存中并且速度很快。可以将分布式缓存与存储断开连接,因此接口应对此负责。

https://github.com/aspnet/Caching/issues/220#issuecomment-241229013

答案 1 :(得分:0)

通过设计IMemoryCache接口,当您需要为同一应用程序服务器上的单个或多个进程实现数据缓存机制时使用。 我们可以说是进程内缓存机制。

同时,IDistributedCache接口是为分布式缓存机制设计的,其中任何数据缓存在许多应用程序服务器(Web场)上共享。 我们可以说是Web场数据缓存方案。

希望这会有所帮助。