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

Caching windows azure:共享缓存-是否全部删除?,caching,azure,azure-caching,Caching,Azure,Azure Caching,我正在使用Windows Azure共享缓存。我遇到了几个问题: 如何知道缓存中存在哪些密钥?是否有类似于GetAllKeys()的方法 是否可以调用clearAll() 为什么我不能使用区域 谢谢。此部分适用于Windows Azure缓存 Windows Azure提供两种类型的缓存模式: 专用角色缓存-角色实例专门用于 缓存(该实例中没有运行其他代码) 共址角色缓存-缓存共享VM资源 (带宽、CPU和内存)与应用程序一起使用 如何知道缓存中有什么?是否有类似“GetAllKeys()”

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

  • 如何知道缓存中存在哪些密钥?是否有类似于
    GetAllKeys()
    的方法
  • 是否可以调用
    clearAll()
  • 为什么我不能使用区域
    谢谢。

    此部分适用于Windows Azure缓存

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

    • 专用角色缓存-角色实例专门用于 缓存(该实例中没有运行其他代码)
    • 共址角色缓存-缓存共享VM资源 (带宽、CPU和内存)与应用程序一起使用
    如何知道缓存中有什么?是否有类似“GetAllKeys()”的方法

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

    缓存使用标准模式是

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

    是否可以清除所有()

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

    为什么我不能使用regoins

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



    本节适用于Windows Azure共享缓存

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

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

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

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


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

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

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

    不客气。我忘了补充一点,那就是Windows Azure的发展非常快,在接下来的几个月里你可以有很多改进。问题是关于Windows Azure共享缓存的。您在这里描述的是Windows Azure缓存。@Sandrino Di Mattia,啊!我完全错过了。在这种情况下,非常抱歉混淆了它,我将很快删除我的答案,因为它不适合Azure共享缓存。不要删除你的答案。只需更新它并包含有关配额和缓存逐出的信息: