windows azure:共享缓存 - 全部删除?

时间:2013-01-07 08:00:30

标签: caching azure azure-caching

我正在使用Windows Azure共享缓存。我遇到了一些问题:

  1. 如何知道缓存中存在哪些密钥?是否有像GetAllKeys()方法的东西?
  2. 是否可以致电clearAll()
  3. 为什么我不能使用地区?
  4. 感谢。

2 个答案:

答案 0 :(得分:2)

本节适用于 Windows Azure缓存

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

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

如何知道缓存中的内容?是否有类似“GetAllKeys()”方法的东西?

您是否需要针对报告/审核的更多应用信息? 我认为,微软没有提供这种方法有一个很好的理由:它返回的信息很快就会过时。请注意,缓存项目可能随时过期(取决于将项目添加到缓存的到期时间和时间),因此您从 GetAllKeys()方法收到的信息可能是无效秒或甚至毫秒。

缓存使用标准模式将是

  • 通过密钥从缓存中获取项目
  • 如果缓存返回Null,则创建该项并将/添加到缓存中
  • 对项目执行操作(从缓存中获取或重新创建)

同位角色缓存

  

是否可以clearAll()?

我认为您不应该担心清除缓存。如果将缓存逐出策略设置为 LRU (最近最近使用),则首先丢弃最近最少使用的项目。因此,您永远不会得到“缓存中没有空格”的任何内容。

  

为什么我不能使用regoins?

您可以但只能在同一个实例上找到缓存。专用角色缓存不支持它。


本节适用于 Windows Azure共享缓存

从客户端角度来看,Windows Azure共享缓存与Windows Azure缓存(如上所述)非常相似,所有解释也适用于共享缓存。

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

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

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

我希望这有助于您更好地了解Azure缓存和共享缓存。

答案 1 :(得分:2)

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

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