sql >> Database >  >> NoSQL >> Redis

Redis Async API's

Alle Redis Client Managers implementeren beide IRedisClientsManager en IRedisClientsManagerAsync dus IOC-registraties blijven hetzelfde die kunnen blijven registreren tegen de bestaande IRedisClientsManager interface, bijv.:

container.Register<IRedisClientsManager>(c => 
    new RedisManagerPool(redisConnectionString));

Waar het kan worden gebruikt om beide synchronisatie IRedisClient . op te lossen en async IRedisClientAsync klanten, bijvoorbeeld:

using var syncRedis = container.Resolve<IRedisClientsManager>().GetClient();
await using var asyncRedis = await container.Resolve<IRedisClientsManager>().GetClientAsync();

Als u alleen asynchrone API-gebruik wilt forceren, kunt u ervoor kiezen om gewoon IRedisClientsManagerAsync te registreren waar het u alleen asynchrone alleen laat oplossen IRedisClientAsync en ICacheClientAsync klanten, bijvoorbeeld:

public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton<IRedisClientsManagerAsync>(c => new RedisManagerPool());
}

//... 

public class MyDep
{
    private IRedisClientsManagerAsync manager;
    public MyDep(IRedisClientsManagerAsync manager) => this.manager = manager;

    public async Task<long> Incr(string key, uint value)
    {
        await using var redis = await manager.GetClientAsync();
        return await redis.IncrementAsync(key, value);
    }
}

Gebruik in ServiceStack #

Binnen ServiceStack Services &Controllers raden we aan om GetRedisAsync() . te gebruiken om een ​​IRedisClientAsync . op te lossen :

public class MyService : Service
{
    public async Task<object> Any(MyRequest request)
    {
        await using var redis = await GetRedisAsync();
        await redis.IncrementAsync(nameof(MyRequest), 1);
    }
}

public class HomeController : ServiceStackController
{
    public async Task<ActionResult> Index()
    {
        await using var redis = await GetRedisAsync();
        await redis.IncrementAsync(nameof(HomeController), 1);
    }
}

  1. Toegang tot de meteorenproductiedatabase in 2016

  2. Redis afsluiten

  3. In NodeJS, hoe resultaten van mongodb met verschillende veldnamen uit te voeren?

  4. Docker-compose , toch om een ​​redis.conf-bestand op te geven?