【问题标题】:Get key/value mapping of cache only cache hits from IRedisClient从 IRedisClient 获取仅缓存缓存命中的键/值映射
【发布时间】:2015-03-05 05:32:22
【问题描述】:

我正在使用 ServiceStack 提供的 Redis 客户端 v3。我正在实现“装饰器模式”,并且有一个将缓存逻辑包装在我的存储库周围的类,这样如果有缓存未命中,我可以在存储库中查找数据。问题是在某些情况下,我想将null 添加到缓存中,以便有一个条目,但没有任何价值。这意味着我将不会访问数据库以获得该值。

我需要知道的是,是否有任何方法可以为IRedisClient 接口的only 缓存命中获取键/值映射。

有多种方法可以使用此接口从缓存中检索值。首先,我尝试了GetAll<T> 方法。这将返回缓存中的项目和 T 的默认值(如果它不存在)。这对我没有帮助,因为它看起来好像我已经为给定的键添加了一个 null 条目。

然后我尝试了GetValues,但它只返回它找到的值,而不是关联的键。

最后,我尝试了GetValuesMap<T>,但这似乎与GetAll<T> 完全一样。

有谁知道一种方法来获取仅缓存命中的映射?

谢谢!

【问题讨论】:

    标签: c# caching redis servicestack.redis


    【解决方案1】:

    IRedisClient 有一个名为 ContainsKey(string key) 的方法,您可以在尝试 Get 之前检查它。

    如果 ContainsKey 返回 true,则您知道如果返回 null 值,则表明您自己添加了它。

    【讨论】:

    • 使用这种方法,我失去了一次访问缓存并检查许多条目的能力。
    猜你喜欢
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多