从IRedisClient获取仅缓存缓存命中的键/值映射

时间:2015-03-04 16:56:17

标签: c# caching redis servicestack.redis

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

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

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

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

最后,我尝试GetValuesMap<T>,但这似乎与GetAll<T>完全相同。

有没有人知道如何只获取缓存命中的映射?

谢谢!

1 个答案:

答案 0 :(得分:0)

IRedisClient有一个名为 ContainsKey(字符串键)的方法,您可以在尝试获取之前检查此方法。

如果ContainsKey返回true,您知道如果您返回一个空值,那么您自己添加了它。