sql >> Databasteknik >  >> NoSQL >> Redis

Redis Async API:er

Alla Redis Client Managers implementerar både IRedisClientsManager och IRedisClientsManagerAsync så IOC-registreringarna förblir desamma som kan fortsätta att registrera sig mot den befintliga IRedisClientsManager gränssnitt, t.ex.:

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

Där den kan användas för att lösa både synk IRedisClient och async IRedisClientAsync klienter, t.ex.:

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

Om du vill tvinga API-användning endast asynkront kan du välja att bara registrera IRedisClientsManagerAsync där det bara låter dig lösa asynkroniserad enbart IRedisClientAsync och ICacheClientAsync klienter, t.ex.:

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);
    }
}

Användning i ServiceStack #

Inuti ServiceStack Services &Controllers rekommenderar vi att du använder GetRedisAsync() för att lösa en IRedisClientAsync :

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. Redis :Hur ställer man in en nyckel lika med värdet på en annan nyckel?

  2. MongoDB 3.2-autentisering misslyckades

  3. Hur lagrar man i Redis sorterad uppsättning med tidsstämpel på serversidan som poäng?

  4. Hur kan jag använda Tornado och Redis asynkront?