避免将对象添加到缓存

Avoid object being added to the cache

在例子中

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


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

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

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

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

因此您可以在委托中进行验证:

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

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