Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Redis Async APIs

Tất cả người quản lý khách hàng của Redis đều triển khai cả IRedisClientsManagerIRedisClientsManagerAsync vì vậy, đăng ký IOC vẫn giữ nguyên có thể tiếp tục đăng ký với IRedisClientsManager hiện có giao diện, ví dụ:

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

Nơi nó có thể được sử dụng để giải quyết cả đồng bộ hóa IRedisClient và async IRedisClientAsync khách hàng, ví dụ:

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

Nếu bạn muốn buộc sử dụng API không đồng bộ, có thể chọn chỉ đăng ký IRedisClientsManagerAsync nơi nó chỉ cho phép bạn giải quyết không đồng bộ chỉ IRedisClientAsyncICacheClientAsync khách hàng, ví dụ:

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

Cách sử dụng trong ServiceStack #

Bên trong Dịch vụ &Bộ điều khiển ServiceStack, chúng tôi khuyên bạn nên sử dụng GetRedisAsync() để giải quyết một 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. Giảm thời gian thực hiện các công việc của sidekiq

  2. Làm thế nào để sử dụng redis '`DUMP` và` RESTORE` (ngoại tuyến)?

  3. Cách nhận nhiều giá trị danh sách trong một lần gọi trong RedisTemplate của Jedis Client

  4. docker -omp + django + redis - Lỗi 111 khi kết nối với 127.0.0.1:6379. Kết nối bị từ chối

  5. Node.js Redis Connection Pooling