当我通过SE.Redis执行一个事务(MULTI/EXEC),它是否会多次访问服务器?例如,
ITransaction tran = Database.CreateTransaction();
tran.AddCondition(Condition.HashExists(cacheKey, oldKey));
HashEntry hashEntry = GetHashEntry(newKeyValuePair);
Task fieldDeleteTask = tran.HashDeleteAsync(cacheKey, oldKey);
Task hashSetTask = tran.HashSetAsync(cacheKey, new[] { hashEntry });
if (await tran.ExecuteAsync())
{
await fieldDeleteTask;
await hashSetTask;
}
在这里,我正在事务中执行两个任务。这是不是意味着我要向服务器发送4次请求?1次MULTI,1次删除,1次设置,1次执行?或者SE.Redis足够智能,可以将任务缓冲在本地内存中,并在调用ExecuteAsync
时一次性发送所有任务?
ExecuteAsync
并将整个内容转换为 LUA 并在后台运行ScriptEvaluateAsync
,那就太酷了 :P - nawfalEXEC
/DISCARD
中发送任何数据 - 我只是在这里谈论键和值。 - Marc Gravell