自安装内存缓存 - 它存在吗?

时间:2011-05-13 16:43:18

标签: c# caching .net-3.5 memcached redis

我已经阅读过各种跨机器缓存机制(Redis,Velocity,nMemCached等等)。他们似乎都需要一台中央机器来管理缓存。

是否有自行安装的缓存引擎这样的东西 - 例如如果当前子网上不存在缓存,则会创建一个节点。如果确实存在,它会将机器加入缓存池吗?

上下文:我有一个应用程序,通过ClickOnce部署到同一子网内的大约100个用户。这些用户中的每一个都通过WAN(跨国家,在某些情况下跨越海洋)访问资源,这些资源执行CPU密集型计算并花费大量时间来完成。

因此,该应用程序感觉迟钝。我已经尽我所能通过将长期存在的查询抛到不同的线程上来缓解这种情况。但这只会带你到目前为止。我添加了本地缓存(通过SQL Compact DB),它工作得很好,但是大多数用户访问类似的信息,他们一起对计算服务器施加了一些压力。如果我能够通过我的应用程序运送内存缓存,我可以将它提升到一个新的水平,该应用程序可以无缝地与其他机器一起使用来创建网络范围的缓存机制。

2 个答案:

答案 0 :(得分:2)

如果您不想使用主计算机,或者您不想依赖特定的网络布局/安装,则可以将Peer to Peer视为一个选项。 WCF具有本地对等支持。以下链接与您的需求有些相关:How To Design State Sharing In A Peer Network

答案 1 :(得分:2)

你是那个知道什么是最好的人,但拥有一个可以协调整个批次的“服务器应用程序”可能是一件好事:

  1. User1询问服务器“我需要X”。
  2. 服务器告诉User1“好了,请它到DataBase”
  3. User2询问服务器“我需要X。”
  4. 服务器告诉User2“User1得到它。”
  5. ...
  6. User1告诉服务器“我不再需要X了。”
  7. 由于其易变性,您还可以使某些类型的数据“无法缓存”,或者避免阻塞用户的某个连接。当然服务器会收到很多请求,但是如果你不得不将它与网络解决方案中的广播进行比较。如果我没有正确理解你的问题,只需写一个评论,忽略这一点,我将删除不误导SO用户的答案。