Exemplo n.º 1
0
        /// <summary>
        /// 保存调用记录
        /// </summary>
        public async Task AddApiRecordAsync(string api, Policy policy, string policyKey, string policyValue, DateTime now, int duration)
        {
            var key = FromatApiRecordKey(api, policy, policyKey, policyValue);

            await _db.ZAddAsync(key, (now.Ticks, now.Ticks.ToString()));

            //设置过期时间
            await _db.ExpireAsync(key, TimeSpan.FromSeconds(duration));
        }
Exemplo n.º 2
0
        private async Task RefreshAsync(string key, DateTimeOffset?absExpr, TimeSpan?sldExpr, CancellationToken token = default)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            token.ThrowIfCancellationRequested();

            // Note Refresh has no effect if there is just an absolute expiration (or neither).
            TimeSpan?expr = null;

            if (sldExpr.HasValue)
            {
                if (absExpr.HasValue)
                {
                    var relExpr = absExpr.Value - DateTimeOffset.Now;
                    expr = relExpr <= sldExpr.Value ? relExpr : sldExpr;
                }
                else
                {
                    expr = sldExpr;
                }
                await _redisClient.ExpireAsync(key, expr ?? TimeSpan.Zero);

                // TODO: Error handling
            }
        }