![](/img/trans.png)
[英]Generic implementation of 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.