Обновление списка <T>в MemoryCache на .NET Core - PullRequest
0 голосов
/ 11 июля 2019

Мне нужно хранить и обновлять список в MemoryCache.Каждая транзакция, попадающая на мой WEB.API, будет добавлять запись в этот список, и каждые 1 мин список будет сбрасываться в базу данных и удаляться из кэша.

Моя проблема - параллелизм и предотвращение грязного чтения / записи.Мне также нужно очень быстро написать в этот список, чтобы моя транзакция не задерживалась.

// get list in cache
List<MyObj> stat = cache.Get<List<MyObj>>(key);

if (stat == null)
  stat = new List<MyObj>() { new MyObj() { SomeKey = SomeVal } };
else
  stat.Add(new MyObj() { SomeKey = SomeVal });

// by this time another thread could modify the cached object, so my current object is not good anymore
cache.Set<List<MyObj>>(key, stat);
...