O NetCache é uma biblioteca de armazenamento de cache simples, de injeção de dependência e persistente.
O NetCache foi projetado para ser uma biblioteca simples e rápida que fornece uma solução quase prata com armazenamento em cache e persistência para aplicativos .NET. Eu projetei a biblioteca para ser funcional para todos os aplicativos .NET modernos.
Execute o seguinte no console do seu gerenciador de pacotes ou instale através do Nuget Package Manager no Visual Studio ou Rider;
PM > Install-Package NetCacheSe você deseja usar o netcache com injeção de dependência, também deve instalar o seguinte pacote
PM > Install-Package NetCache.DependencyInjectionVocê pode começar a usar o pacote injetando -o em sua coleção de serviços ou criando uma nova instância da classe Netcacher.
var cacher = new NetCacher ( new NetCacherOptions ( ) ) ; // Create a new cacher with default optionsOu, com injeção de dependência
services . AddNetCacher ( opts =>
{
.. .
} ) ;Em primeiro lugar, aqui está a nossa classe simulada que usaremos nos exemplos a seguir:
public class Mock
{
public string FirstName { get ; set ; }
public string LastName { get ; set ; }
public Mock ( string firstName , string lastName )
{
FirstName = firstName ;
LastName = lastName ;
}
} Agora podemos começar, para estabelecer um novo recorde no cache, você pode chamar o método SetObject<TObj> como mostrado
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 E para obter o mesmo registro, podemos usar o método GetRecord<TObj> como mostrado abaixo
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 ) ; // FooTalvez o serializador padrão simplesmente não esteja cortando para você e você precisa do seu próprio serializador personalizado que oferece soluções especificamente adaptadas. Não tem problema, encontre abaixo uma implementação simples de um serializador personalizado.
public class CustomSerializer : ISerializer
{
public ReadOnlySpan < char > Serialize < TObj > ( TObj obj )
{
// ...
}
public TObj ? Deserialize < TObj > ( ReadOnlySpan < char > rawData )
{
// ...
}
}É verdade que este não faz absolutamente nada, mas pode facilmente fornecer espaço suficiente para criar seus próprios requisitos no sistema serializador. Você pode até acelerar o desempenho da biblioteca (nesse caso, abrir uma solicitação de tração!).
Licenciado sob a licença do MIT e atualmente aproveitando estes pacotes de código aberto: