2017-04-04 71 views
0

我在Windows应用程序中使用System.Runtime.Caching(c#)C#窗口应用程序的缓存服务器

这对单个机器正常工作。现在我想在不同计算机上运行的多个实例之间共享缓存。

所以我想使用Memcached的或Hazelcast危

任何C#实现或想法/结果如何工作。请注意我正在为Windows应用程序执行此操作。任何其他建议也是受欢迎的。

感谢

+1

Redis一路! – zaitsman

+0

在这种情况下,Redis缓存是最佳选择。 –

+0

当你需要查询能力时,Redis是可怜的选项之一 –

回答

2

使用缓存在内存中,需要的以下用例清醒的认识:

  1. 难道只有一个内存转储?
  2. 是否需要查询能力,如IQueryable,由框架提供,如实体框架为Sql Server

如果只有内存转储然后Redis, MemCache都很好,因为他们只是将数据存储在内存中的二进制,反序列化在客户端的位置,如果你要查询大量的数据,这是不好的,一旦取出,并希望在源代码处理过滤,分类和分页。

如果需要IQueryable处理,然后检查了ApacheIgnite.Net. Hazelcast and ScaleOut,从他们的我发现Apache的点燃是最先进的,因为它只是不支持Expression trees, via IQueryable,也Ansi Sql,这是超过其他非常大的优势缓存

而且另一点仍然存在,为什么不是由现代在存储系统取代SQL Server或类似的数据库就像VoltDB或文档DB像Raven,因为它们更快,以及整合及完全排除需要单独的缓存

+0

我正在使用MySql。在这个时候,迁移是不可能的。我只需要一个内存转储。 –

+0

考虑[Apache Ignite.Net](https://apacheignite-net.readme.io/docs),这在我的理解中比Redis更好。甚至可以兼容未来的要求。 –

+0

谢谢我正在检查Apache Ignite –

2

我会建议你使用Redis用于缓存目的。
下面是Redis的一个很好的C#库:ServiceStack.Redis

+0

使用Redis,它会被安装为Windows服务? –

+0

将它安装在具有不同Windows操作系统版本的客户端位置上是多么容易 –

+0

不应该是一个问题,但看看这可能是一个付费客户端,一个由Stack Overflow提供免费 –

相关问题