Azure缓存 - 如何确定密钥是否在缓存中?

Mr.*_*. T 5 c# azure-caching

有没有办法,使用Azure缓存,来确定缓存中是否存在具有特定键的对象,而不实际返回对象本身?

我现在正在做类似的事情

    public bool IsKeyInCache(string cacheKey)
    {
        DataCacheItem item = null;
        CacheRetryPolicy.ExecuteAction(() =>
        {
            item = cache.GetCacheItem(cacheKey);
        });

        return item != null;
    }
Run Code Online (Sandbox Code Playgroud)

但是,因为缓存中的对象非常庞大且反序列化很昂贵,所以性能非常糟糕.

我已经挖掘了MSDN文档并没有看到任何替代方案,但也许我错过了一些东西.

到目前为止,我最好的想法是添加一个小的"标记"对象与我的大对象同时缓存,并检查反序列化是否便宜的"标记"对象的存在.但这不是一个强大的解决方案,因为我的大对象完全有可能在"标记"对象保留时从缓存中清除.

pau*_*sm4 0

我相信您正在寻找的 API 是DataCache.Get(key)

但我仍然认为最好的选择是不要微观管理”缓存,只需查询,然后让 Azure 决定。

恕我直言...

  • 这是我的“最佳选择”,因为显然这是我唯一的选择。假设我缓存了一个非常大的对象。当我只想知道“这个密钥是否存在?”时,为什么要付出代价将其从缓存(可能位于集群的不同成员上)传输出来并通过网络传输到我的角色实例? (2认同)