public async Task<bool> SubmitChanges(string[] keys, long[] lockId, List<IUpdateDataContext>[] updateQueues)
{
var inputKeys = keys.Select(k => (RedisKey) k).ToArray();
var inputArgs = lockId.Select(l => (RedisValue) l).Concat(
updateQueues.Select(UpdateQueueToArgs)
.Aggregate(new List<RedisValue>() as IEnumerable<RedisValue>, (cur, next) => cur.Concat(next))).ToArray();
//Console.WriteLine("SubmitChanges Keys={0} Args={1}"
// , string.Join(",", inputKeys)
// , string.Join(",", inputArgs));
var ret = await Handle.ScriptEvaluateAsync(
updateScriptSha
, inputKeys
, inputArgs);
Log.Info("SubmitChanges ret={0}", ret);
if (ret.ToString() != "0")
{
throw new KeyLockedPreemptedException(ret.ToString());
}
//await Task.WhenAll(updates.Select(u=>u.ExecuteAsync()));
return true;
//var ret = await Handle.ScriptEvaluate("", new RedisKey[] { key }, )
}