コード例 #1
0
        public async Task <TokenInfo> GetTokenInfoAsync(Guid tokenInfoId, CancellationToken cancellationToken = default)
        {
            if (tokenInfoId == default)
            {
                throw new ArgumentNullException(nameof(tokenInfoId));
            }

            await using var redis = await _redisClientsManager.GetClientAsync(cancellationToken);

            return(await redis.As <TokenInfo>().GetByIdAsync(tokenInfoId, cancellationToken) ??
                   throw new TokenInfoNotFoundException($"TokenInfoId = {tokenInfoId}"));
        }
コード例 #2
0
        public ICacheClient CreateClient()
        {
            var client      = _manager.GetClient();
            var clientAsync = _managerAsync.GetClientAsync().Result;

            return(new RedisClient(client, clientAsync));
        }
コード例 #3
0
        public async Task Does_block_ReadWrite_clients_pool()
        {
            await using IRedisClientsManagerAsync manager = CreateAndStartManager();
            var delay   = TimeSpan.FromSeconds(1);
            var client1 = await manager.GetClientAsync();

            var client2 = await manager.GetClientAsync();

            var client3 = await manager.GetClientAsync();

            var client4 = await manager.GetClientAsync();

#pragma warning disable IDE0039 // Use local function
            Action func = async delegate
#pragma warning restore IDE0039 // Use local function
            {
                await Task.Delay(delay + TimeSpan.FromSeconds(0.5));

                await client4.DisposeAsync();
            };

#if NETCORE
            _ = Task.Run(func);
#else
            func.BeginInvoke(null, null);
#endif

            var start = DateTime.Now;

            var client5 = await manager.GetClientAsync();

            Assert.That(DateTime.Now - start, Is.GreaterThanOrEqualTo(delay));

            AssertClientHasHost(client1, testReadWriteHosts[0]);
            AssertClientHasHost(client2, testReadWriteHosts[1]);
            AssertClientHasHost(client3, testReadWriteHosts[2]);
            AssertClientHasHost(client4, testReadWriteHosts[3]);
            AssertClientHasHost(client5, testReadWriteHosts[3]);
        }