NetCache es una biblioteca de almacenamiento de caché simple y persistente de inyección de dependencia.
NetCache está diseñado para ser una biblioteca simple y rápida que proporciona una solución casi plateada con almacenamiento en caché y persistencia para aplicaciones .NET. He diseñado la biblioteca para que sea funcional para todas las aplicaciones modernas de .NET.
Ejecute lo siguiente en su consola de Administrador de paquetes o instale a través del Nuget Package Manager en Visual Studio o Rider;
PM > Install-Package NetCacheSi desea usar NetCache con inyección de dependencia, también debe instalar el siguiente paquete
PM > Install-Package NetCache.DependencyInjectionPuede comenzar a usar el paquete inyectándolo en su colección de servicios o creando una nueva instancia de la clase NetCacher.
var cacher = new NetCacher ( new NetCacherOptions ( ) ) ; // Create a new cacher with default optionsO, con inyección de dependencia
services . AddNetCacher ( opts =>
{
.. .
} ) ;En primer lugar, aquí está nuestra clase simulada que usaremos en los siguientes ejemplos:
public class Mock
{
public string FirstName { get ; set ; }
public string LastName { get ; set ; }
public Mock ( string firstName , string lastName )
{
FirstName = firstName ;
LastName = lastName ;
}
} Ahora podemos comenzar, para establecer un nuevo registro en el caché, puede llamar al método SetObject<TObj> como se muestra
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 Y para obtener ese mismo registro, podemos usar el método GetRecord<TObj> como se muestra a continuación
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 ) ; // FooTal vez, el serializador predeterminado simplemente no lo corta por usted y necesita su propio serializador personalizado que le brinde soluciones específicamente personalizadas. No hay problema, encuentre a continuación una implementación simple de un serializador personalizado.
public class CustomSerializer : ISerializer
{
public ReadOnlySpan < char > Serialize < TObj > ( TObj obj )
{
// ...
}
public TObj ? Deserialize < TObj > ( ReadOnlySpan < char > rawData )
{
// ...
}
}Concedido que este no hace absolutamente nada, pero puede proporcionarle suficiente espacio para construir sus propios requisitos en el sistema de serialización. Incluso podría acelerar el rendimiento de la biblioteca (en ese caso, ¡abrir una solicitud de extracción!).
Con licencia bajo la licencia MIT y actualmente aprovechando estos paquetes de código abierto: