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