2013-01-07 75 views

回答

2

本部分适用于Windows Azure的缓存

的Windows Azure提供了两种类型的缓存模式:

  • 专用角色缓存 - 角色实例只用于 缓存(有没有其他代码在该实例中运行)。
  • 位于同一位置的角色缓存 - 缓存与应用程序共享虚拟机资源 (带宽,CPU和内存)。

如何知道缓存中有什么?有没有像“GetAllKeys()”方法?

您是否需要这些信息为您的报告/审计更多的应用? 我认为,微软并没有提供这种方法,原因很简单:它返回的信息可能会在不久后过时。请参阅缓存项目可能随时过期(取决于将项目添加到缓存的过期时间和时间),因此您将从GetAllKeys()方法收到的信息可能无效秒或甚至毫秒后。

高速缓存使用标准模式将

  • 通过钥匙
  • 获取从缓存中的项目如果缓存返回Null然后创建一个项目,并把/添加到缓存中
  • 对项目执行操作(无论是从缓存中获取或重新创建)

同位角色缓存

是否有可能clearAll()?

我不认为你应该担心清除缓存。如果您将缓存逐出策略设置为LRU(Last Recently Used),那么最近最少使用的项目将首先被丢弃。所以你永远不会得到任何像“缓存中没有空间”。

为什么我不能使用regoins?

你可以,但只能用高速缓存定位在相同的实例。专用角色缓存不支持它。


此部分适用于Windows Azure的共享缓存

Windows Azure的共享高速缓存是从视图客户端点非常相似到Windows Azure缓存(如上所述)和所有的解释适用于共享缓存也。

物品驱逐有一个小的变化: 在共享缓存中,没有特定到期时间的物品将在48小时之后过期。但是,您可以添加项目到缓存(通过的AddPut方法的各种重载)有明确的到期时间,如X分钟或Y天。

如果您超出缓存的大小(高速缓存大小您创建时选择),缓存服务将启动“逐出项目”在缓存中,直到内存问题得到解决(你有足够的内存来添加新的缓存项目)。在“驱逐” LRU机制用于 - 在缓存中最近最少使用的项目被删除。

获取,检查并重新创建处理缓存项目的方法(上述)也适用于共享缓存。

我希望这将有助于你更好地理解Azure的缓存和共享缓存。

+0

非常感谢你! – socksocket

+1

非常欢迎。我忘记补充的一件事是Windows Azure发展非常迅速,在接下来的几个月里你可以有很多改进。 – Tom

+1

问题是关于Windows Azure共享缓存。你在这里描述的是Windows Azure缓存。 –

2

以下方法清除高速缓存中的所有数据。

public static void InvalidateCache(string cacheName) 
{ 
    DataCache desiredCache = new DataCache(cacheName); 
    foreach (string regionName in desiredCache.GetSystemRegions()) 
    { 
     desiredCache.ClearRegion(regionName); 
    } 
}