38 Stimmen

Caching in C#/.Net

Ich wollte Sie fragen, was ist der beste Ansatz, um einen Cache in C# zu implementieren? Gibt es eine Möglichkeit, indem man bestimmte .NET-Klassen oder etwas Ähnliches verwendet? Vielleicht so etwas wie ein Wörterbuch, das einige Einträge entfernt, wenn es zu groß wird, aber wo deren Einträge nicht durch den Garbage Collector entfernt werden?

2 Stimmen

Es kommt darauf an schwer in der Anwendung. Wofür verwenden Sie es?

0 Stimmen

Nicht in einer asp.net Art und Weise, aber ich weiß noch nicht genau, ich werde die Anforderungen posten, wenn ich sie habe, aber danke für Ihre erste Antwort :)

0 Stimmen

Robustes .NET-Caching behandelt häufige Fallstricke des Caching und stellt eine Bibliothek zur Verfügung, die Entwicklern hilft, einige der üblichen Fallstricke zu vermeiden. Der Beitrag erklärt insbesondere, wie Sie SpeicherCache sicher.

-2voto

Dev-lop-er Punkte 338

- Speicher-Cache-Implementierung für den .Net-Kern

public class CachePocRepository : ICachedEmployeeRepository
    {
        private readonly IEmployeeRepository _employeeRepository;
        private readonly IMemoryCache _memoryCache;

        public CachePocRepository(
            IEmployeeRepository employeeRepository,
            IMemoryCache memoryCache)
        {
            _employeeRepository = employeeRepository;
            _memoryCache = memoryCache;
        }

        public async Task<Employee> GetEmployeeDetailsId(string employeeId)
        {
            _memoryCache.TryGetValue(employeeId, out Employee employee);

            if (employee != null)
            {
                return employee;
            }

            employee = await _employeeRepository.GetEmployeeDetailsId(employeeId);

            _memoryCache.Set(employeeId,
                employee,
                new MemoryCacheEntryOptions()
                {
                    AbsoluteExpiration = DateTimeOffset.UtcNow.AddDays(7),
                });

            return employee;

        }

-3voto

Toad Punkte 15025

Sie könnten eine Hashtable verwenden

sehr schnelle Suchvorgänge, keine Schlüsselkollisionen und kein Garbage Collecting der Daten

0 Stimmen

Was aber, wenn die Hashtabellen zu groß werden?

0 Stimmen

Das Einzige, was passieren kann, ist, dass Ihnen der Speicher ausgeht. Wenn dies nicht der Fall ist, läuft die Hashtabelle problemlos. Intern behebt sie eventuelle Schlüsselkollisionen, so dass Sie sie nicht bemerken.

5 Stimmen

Hashtable ist kein Cache, sondern ein Nachschlagewerk (wenn es zu diesem Zweck verwendet wird). Ein Cache verfügt über Ablauf, Spülung, Kapazitätsmanagement und manchmal Transaktionsunterstützung, Einfrieren und viele andere Funktionen. Schauen Sie sich den Caching Application Block an, obwohl er Sie zwingt, die gesamte Farm anderer Application Blocks einzubinden und sehr konfigurationsintensiv ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X