3

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

  1. 如何知道缓存中存在哪些键?有没有类似GetAllKeys()方法的东西?
  2. 可以打电话clearAll()吗?
  3. 为什么我不能使用区域?

谢谢。

4

2 回答 2

2

本节适用于Windows Azure 缓存

Windows Azure 提供两种缓存模式:

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

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

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

缓存使用标准模式将是

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

并置角色缓存

是否可以清除所有()?

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

为什么我不能使用regoins?

您可以但只能在同一实例上使用缓存定位。专用角色缓存不支持它。


本部分适用于Windows Azure 共享缓存

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

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

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

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

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

于 2013-01-07T10:26:26.343 回答
2

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

public static void InvalidateCache(string cacheName)
{
    DataCache desiredCache = new DataCache(cacheName); 
    foreach (string regionName in desiredCache.GetSystemRegions()) 
    {
        desiredCache.ClearRegion(regionName);
    }
}
于 2013-05-24T15:25:27.063 回答