Netcache ist eine einfache, abhängige Injektionsfreundliche und anhaltende Cache -Speicherbibliothek.
NetCache ist eine einfache und schnelle Bibliothek, die eine fast silberne Kullerlösung mit Caching und Beharrlichkeit für .NET-Anwendungen bietet. Ich habe die Bibliothek so gestaltet, dass sie für alle modernen .NET -Anwendungen funktionsfähig ist.
Führen Sie Folgendes in Ihrer Paket -Manager -Konsole aus oder installieren Sie sie über den Nuget -Paket -Manager auf Visual Studio oder Rider.
PM > Install-Package NetCacheWenn Sie NetCache mit Abhängigkeitsinjektion verwenden möchten, sollten Sie auch das folgende Paket installieren
PM > Install-Package NetCache.DependencyInjectionSie können das Paket verwenden, indem Sie es entweder in Ihre Service -Sammlung injizieren oder eine neue Instanz der NetCacher -Klasse erstellen.
var cacher = new NetCacher ( new NetCacherOptions ( ) ) ; // Create a new cacher with default optionsOder mit Abhängigkeitsinjektion
services . AddNetCacher ( opts =>
{
.. .
} ) ;Erstens ist hier unsere Scheinklasse, die wir in den folgenden Beispielen verwenden werden:
public class Mock
{
public string FirstName { get ; set ; }
public string LastName { get ; set ; }
public Mock ( string firstName , string lastName )
{
FirstName = firstName ;
LastName = lastName ;
}
} Jetzt können wir loslegen, um SetObject<TObj> neuen Datensatz im Cache festzulegen.
var myObj = new Mock ( "Foo" , "Bar" ) ;
cacher . SetObject < Mock > ( "myKey" , myObj , TimeSpan . FromMinutes ( 1 ) ) ;
// Object has been cached under the key 'myKey' for 1 minute before it expires Und um denselben Datensatz zu GetRecord<TObj>
var myObj = cacher . GetObject < Mock > ( "myKey" ) ;
if ( myObj is null )
{
// No object was found in the cache, it could've expired or never existed
Console . WriteLine ( "No object found!" ) ;
return ;
}
Console . WriteLine ( myObj . FirstName ) ; // FooVielleicht schneidet der Standard -Serializer ihn einfach nicht für Sie und Sie benötigen Ihren eigenen Serializer, der Ihnen speziell maßgeschneiderte Lösungen bietet. Kein Problem, finden Sie unten eine einfache Implementierung eines benutzerdefinierten Serializers.
public class CustomSerializer : ISerializer
{
public ReadOnlySpan < char > Serialize < TObj > ( TObj obj )
{
// ...
}
public TObj ? Deserialize < TObj > ( ReadOnlySpan < char > rawData )
{
// ...
}
}Zugegeben, dass dieser absolut nichts tut, aber es kann Ihnen leicht genug Raum bieten, um Ihre eigenen Anforderungen in das Serialisierungssystem aufzubauen. Sie könnten sogar die Leistung der Bibliothek beschleunigen (in diesem Fall öffnen Sie eine Pull -Anfrage!).
Lizenziert unter der MIT -Lizenz und nutzt derzeit diese Open -Source -Pakete: