Redis
 sql >> база данни >  >> NoSQL >> Redis

Redis Async API

Всички клиентски мениджъри на Redis внедряват и двата IRedisClientsManager и IRedisClientsManagerAsync така че регистрациите на IOC остават същите, които могат да продължат да се регистрират срещу съществуващия IRedisClientsManager интерфейс, напр.:

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

Където може да се използва за разрешаване на синхронизиране на IRedisClient и async IRedisClientAsync клиенти, напр.:

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

Ако искате да принудите използването на API само за асинхрон, можете да изберете просто да регистрирате IRedisClientsManagerAsync където ви позволява да разрешавате само асинхронно IRedisClientAsync и ICacheClientAsync клиенти, напр.:

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

Използване в ServiceStack #

Вътре в ServiceStack Services &Controllers препоръчваме да използвате GetRedisAsync() за разрешаване на 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
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да настроя манипулатори в RedMQ от събития, повдигнати в моя домейн

  2. Кой е най-ефективният във времето начин за сериализиране/десериализиране на DataTable към/от Redis?

  3. Redis извлича цялата стойност на списъка без итерация и без изскачане

  4. Redis:Как да пресича нормален набор с сортиран набор?

  5. Как да изброя всички Redis бази данни?