RetailSolutions.Shared.Cache
1.2.70
See the version list below for details.
dotnet add package RetailSolutions.Shared.Cache --version 1.2.70
NuGet\Install-Package RetailSolutions.Shared.Cache -Version 1.2.70
<PackageReference Include="RetailSolutions.Shared.Cache" Version="1.2.70" />
<PackageVersion Include="RetailSolutions.Shared.Cache" Version="1.2.70" />
<PackageReference Include="RetailSolutions.Shared.Cache" />
paket add RetailSolutions.Shared.Cache --version 1.2.70
#r "nuget: RetailSolutions.Shared.Cache, 1.2.70"
#:package RetailSolutions.Shared.Cache@1.2.70
#addin nuget:?package=RetailSolutions.Shared.Cache&version=1.2.70
#tool nuget:?package=RetailSolutions.Shared.Cache&version=1.2.70
RetailSolutions.Shared.Cache
Biblioteca de abstrações para Redis com suporte a distributed locks usando RedLock.net.
Instalação
dotnet add package RetailSolutions.Shared.Cache
Ou via Package Manager Console:
Install-Package RetailSolutions.Shared.Cache
Uso
Configuração Básica
Registre os serviços Redis no seu HostApplicationBuilder:
using RetailSolutions.Shared.Cache;
var builder = Host.CreateApplicationBuilder(args);
var redisConnectionString = builder.Configuration.GetConnectionString("Redis");
builder.AddRedisLock(redisConnectionString, "NomeDaSuaAplicacao");
Configuração no appsettings.json
Adicione a string de conexão do Redis:
{
"ConnectionStrings": {
"Redis": "localhost:6379"
}
}
Para ambientes de produção, você pode incluir autenticação e outras opções:
{
"ConnectionStrings": {
"Redis": "servidor:6379,password=senha,ssl=true,abortConnect=false"
}
}
Serviços Registrados
O método AddRedisLock registra automaticamente:
IDistributedLockFactory(singleton) - Factory para criar distributed locksIConnectionMultiplexer(scoped) - Conexão direta com Redis
Exemplo: Usando Distributed Lock
using RedLockNet;
public class ProcessamentoService
{
private readonly IDistributedLockFactory _lockFactory;
public ProcessamentoService(IDistributedLockFactory lockFactory)
{
_lockFactory = lockFactory;
}
public async Task ProcessarRecursoCompartilhado()
{
var resource = "recurso-compartilhado";
var expiryTime = TimeSpan.FromSeconds(30);
await using var redLock = await _lockFactory.CreateLockAsync(
resource,
expiryTime
);
if (redLock.IsAcquired)
{
// Lógica crítica executada com lock distribuído
await ProcessarDados();
}
else
{
// Lock não adquirido, outro processo está usando o recurso
throw new InvalidOperationException("Recurso está sendo usado por outro processo");
}
}
private Task ProcessarDados() => Task.CompletedTask;
}
Exemplo: Acesso Direto ao Redis
using StackExchange.Redis;
public class CacheService
{
private readonly IConnectionMultiplexer _redis;
public CacheService(IConnectionMultiplexer redis)
{
_redis = redis;
}
public async Task<string?> ObterValorAsync(string chave)
{
var db = _redis.GetDatabase();
var valor = await db.StringGetAsync(chave);
return valor.ToString();
}
public async Task DefinirValorAsync(string chave, string valor, TimeSpan? expiracao = null)
{
var db = _redis.GetDatabase();
await db.StringSetAsync(chave, valor, expiracao);
}
}
Dependências
- Microsoft.Extensions.Configuration (10.0.0)
- Microsoft.Extensions.DependencyInjection (10.0.0)
- Microsoft.Extensions.Hosting (10.0.1)
- RedLock.net (2.3.2)
- StackExchange.Redis (2.9.25)
Requisitos
- .NET 10.0 ou superior
- Instância Redis disponível
Tags
Gemco, RetailSolutions, Redis, Cache, DistributedLock, RedLock
Licença
Copyright © Retail Solutions
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Configuration (>= 10.0.1)
- Microsoft.Extensions.DependencyInjection (>= 10.0.1)
- Microsoft.Extensions.Hosting (>= 10.0.1)
- RedLock.net (>= 2.3.2)
- StackExchange.Redis (>= 2.9.25)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on RetailSolutions.Shared.Cache:
| Package | Downloads |
|---|---|
|
RetailSolutions.Shared.Jobs
Controle de execução de cronjobs |
|
|
RetailSolutions.Shared.Max
Abstrações da Max Sistemas |
|
|
RetailSolutions.Shared.Ifood
Abstrações do Ifood |
GitHub repositories
This package is not used by any popular GitHub repositories.