コード例 #1
0
ファイル: LmsRedisCache.cs プロジェクト: a280238558/lms
        protected virtual Task[] PipelineSetMany(
            IEnumerable <KeyValuePair <string, byte[]> > items,
            DistributedCacheEntryOptions options)
        {
            items   = Check.NotNull(items, nameof(items));
            options = Check.NotNull(options, nameof(options));

            var itemArray          = items.ToArray();
            var tasks              = new Task[itemArray.Length];
            var creationTime       = DateTimeOffset.UtcNow;
            var absoluteExpiration = GetAbsoluteExpiration(creationTime, options);

            for (var i = 0; i < itemArray.Length; i++)
            {
                tasks[i] = RedisDatabase.ScriptEvaluateAsync(SetScript, new RedisKey[] { Instance + itemArray[i].Key },
                                                             new RedisValue[]
                {
                    absoluteExpiration?.Ticks ?? NotPresent,
                    options.SlidingExpiration?.Ticks ?? NotPresent,
                    GetExpirationInSeconds(creationTime, absoluteExpiration, options) ?? NotPresent,
                    itemArray[i].Value
                });
            }

            return(tasks);
        }