繁体   English   中英

System.Runtime.Caching.MemoryCache是​​在同一服务器的多个进程之间共享的

[英]System.Runtime.Caching.MemoryCache is it shared across processes in the same server

我有多个Windows服务在不同的进程上运行,System.Runtime.Caching.MemoryCache对于这些进程是公用的还是每个进程的单独实例?

如果不是,是否存在一种缓存机制,可以共享服务器中.net上缓存名称空间的相同实例。

我不是在寻找像redis这样的分布式缓存。 我想在一个服务器内共享内存缓存,但是要与多个进程共享,所以它要快得多,而不是通过网络连接到另一台服务器并获取数据,反序列化等等。

System.Runtime.Caching.MemoryCache仅在单个进程中工作。 最好的解决方案是将分布式缓存(例如Redis,Memcache等)与单个服务器(运行应用程序的服务器)一起使用。

C#对象不能直接在进程空间之间传递,因此不可避免地会发生某种序列化。

MemoryCache不允许您在进程之间共享内存,因为用于缓存对象的内存已绑定到应用程序池。 这就是您将发现的任何内存缓存实现的本质。

实际使用共享缓存的唯一方法是使用分布式缓存。

但是,有一些方法可以在C#中共享内存,但这不再是实际的缓存。 例如,您可以使用内存映射文件,如较旧的答案所指出的,此处在两个应用程序之间共享内存

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM