我正在使用 Windows Azure 共享缓存。我遇到了几个问题:
- 如何知道缓存中存在哪些键?有没有类似
GetAllKeys()
方法的东西? - 可以打电话
clearAll()
吗? - 为什么我不能使用区域?
谢谢。
我正在使用 Windows Azure 共享缓存。我遇到了几个问题:
GetAllKeys()
方法的东西? clearAll()
吗? 谢谢。
本节适用于Windows Azure 缓存
Windows Azure 提供两种缓存模式:
如何知道缓存中有什么?有没有类似“GetAllKeys()”的方法?
您是否需要这些信息来应用更多报告/审计?我认为,微软没有提供这种方法有一个很好的理由:它返回的信息可能很快就会过时。看,缓存项目可能随时过期(取决于过期时间和将项目添加到缓存的时间),因此您从 GetAllKeys()方法收到的信息可能会在几秒甚至几毫秒后无效。
缓存使用标准模式将是
Null
,则创建该项目并将/添加到缓存中并置角色缓存
是否可以清除所有()?
我认为您不必担心清除缓存。如果您将缓存逐出策略设置为LRU(最近一次使用),那么最近最少使用的项目将首先被丢弃。所以你永远不会得到像“缓存中没有空间”这样的东西。
为什么我不能使用regoins?
您可以但只能在同一实例上使用缓存定位。专用角色缓存不支持它。
本部分适用于Windows Azure 共享缓存
从客户端的角度来看,Windows Azure 共享缓存与 Windows Azure 缓存(如上所述)非常相似,并且所有解释也适用于共享缓存。
项目驱逐有一个小的变化:在共享缓存中,没有特定过期时间的项目将在48 小时后过期。但是,您可以使用明确的过期时间(例如 X 分钟或 Y 天)将项目添加到缓存(通过Add
和方法的各种重载)。Put
当您超过缓存的大小(您在创建过程中选择的缓存大小)时,缓存服务将在缓存中启动“驱逐项目”,直到内存问题得到解决(您有足够的内存来添加新的缓存项目)。在“驱逐”期间使用LRU机制——缓存中最近最少使用的项目被删除。
处理缓存项的获取、检查和重新创建方法(如上所述)也适用于共享缓存。
我希望这将帮助您更好地了解 Azure 缓存和共享缓存。
以下方法清除缓存中的所有数据。
public static void InvalidateCache(string cacheName)
{
DataCache desiredCache = new DataCache(cacheName);
foreach (string regionName in desiredCache.GetSystemRegions())
{
desiredCache.ClearRegion(regionName);
}
}