protected virtual Task[] PipelineRefreshManyAndOutData( string[] keys, RedisValue[][] results, out byte[][] bytes) { bytes = new byte[keys.Length][]; var tasks = new Task[keys.Length]; for (var i = 0; i < keys.Length; i++) { if (results[i].Length >= 2) { MapMetadata(results[i], out DateTimeOffset? absExpr, out TimeSpan? sldExpr); if (sldExpr.HasValue) { TimeSpan?expr; if (absExpr.HasValue) { var relExpr = absExpr.Value - DateTimeOffset.Now; expr = relExpr <= sldExpr.Value ? relExpr : sldExpr; } else { expr = sldExpr; } tasks[i] = RedisDatabase.KeyExpireAsync(keys[i], expr); } else { tasks[i] = Task.CompletedTask; } } if (results[i].Length >= 3 && results[i][2].HasValue) { bytes[i] = results[i][2]; } else { bytes[i] = null; } } return(tasks); }