1

在示例中

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


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

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

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

4

1 回答 1

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;
}
于 2018-02-22T21:13:54.790 回答