避免将对象添加到缓存
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;
}
在例子中
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;
}