避免将对象添加到缓存中

时间:2018-02-21 09:58:35

标签: cachingframework.redis

在示例中

var user = context.Cache.FetchObject<User>(redisKey, () => 
GetUserNameFromDatabase(id));


string GetUserNameFromDatabase(string userid) 
{
   return string.empty();
}

如何防止将string.empty结果添加到缓存....导致它下次再次调用该函数GetUserNameFromDatabase

对某种检查委托会很好,如果返回true将导致添加结果,否则不会。

1 个答案:

答案 0 :(得分:0)

我不认为这是必需的,因为您实际上可以通过返回NULL来阻止将结果添加到缓存中。当被调用的委托返回NULL时,不会向redis缓存添加任何值。查看RedisCacheProvider.cs代码。

因此,您可以在代理中进行验证:

var user = context.Cache.FetchObject<User>(redisKey, () => GetUserNameFromDatabase(id));

string GetUserNameFromDatabase(string userid) 
{
   return (GetUserFromDb(userid) == String.Empty) ? null : user;
}