У меня есть функция, которая получает значение из API, а затем обновляет внутри кеша. Эта функция используется всеми пользователями, но я не хочу обновлять значение для кэширования несколько раз. как избежать множественной записи? как снять блокировки для нескольких пользователей (если это возможно)? если блокировка взята пользователем A
, пользователь B
не должен блокироваться и продолжать обновлять значение и брать собственную блокировку. Все запросы на A
должны обновляться только один раз в кэш.
Void foo(Guid userId){
bool isFound = GetfromCache(userId);
if(!isFound)
var val = GetValueFromAPI();
UpdateInsideCache(val, userId); // Here we could have multiple requests updating the same entry, since it is high scale system ~ Assume 100 Million request per day.
}
B
также должен заблокировать и заблокировать только его запрос. не для других. - person Pawan Kumar   schedule 21.09.2020