Cześć,
w celach wydajnościowych chcę, aby aplikacja część danych trzymała zawsze w pamięci (w bazie danych ma być tylko kopia tych danych). Jeśli user chce coś zmodyfikować z tych danych to zmiana zapisywana jest w bazie danych oraz jednocześnie w pamięci.
Moje pytanie jest: w jaki sposób przechowywać takie dane? Rozważam cache oraz obiekt singleton. Czy są jakieś znaczące różnice między tymi rozwiązaniami? Które rozwiązanie jest lepsze i dlaczego?
Z góry dziękuję za pomoc.
Nie napisałeś jaka wersja .Net więc piszę w ciemno. Użyj IMemoryCache
opakowane w jakiś obiekt-serwis dla lepszego dostępu z logiki biznesowej- nie musi być singletonem, szczególnie jeśli potrzebujesz dostęp do obecnego kontekstu np. w celach logowania.
Pozwoli Ci to na lepszą kontrolę cache, bo będziesz mógł ustawić czas wygaśnięcia jeśli zajdzie taka potrzeba.
https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory?view=aspnetcore-5.0
Okey, dziękuję. A czy jest jakaś inna przewaga IMemoryCache nad zwykłym obiektem wrzuconym do Singletona - poza tym, że w cechu mogę ustawić okres życia obiektu?
Masz od ręki zagwarantowane thread safety, no i zapewne będzie to zrobione lepiej i szybciej niż pisanie własnych cachy.
okey, dzięki :)