在示例中
var user = context.Cache.FetchObject<User>(redisKey, () =>
GetUserNameFromDatabase(id));
string GetUserNameFromDatabase(string userid)
{
return string.empty();
}
如何防止将string.empty结果添加到缓存....导致它下次再次调用该函数GetUserNameFromDatabase
对某种检查委托会很好,如果返回true将导致添加结果,否则不会。
答案 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;
}