Наиболее явный способ использования конвейерной обработки в StackExchange.Redis - это использование CreateBatch
API:
var db = conn.GetDatabase();
var batch = db.CreateBatch();
// not shown: queue some async operations **without** awaiting them (yet)
batch.Execute(); // this sends the queued commands
// now await the things you queued
, однако учтите, что вы можете достичь без , что, поскольку:
- одновременная загрузка из разных потоков (будь то syn c или asyn c) мультиплексируется , что позволяет эффективно использовать одно соединение
- тот же трюк «выдачи нескольких асинхронных c операций, но пока их не ждите» по-прежнему работает нормально даже без пакетного API (использование пакетного API гарантирует, что пакет отправляется как непрерывный блок без работы параллельных потоков, чередующихся внутри пакета, это похоже, но менее строго, чем
CreateTransaction()
API)
Обратите внимание, что в некоторых массовых сценариях ios вы также можете захотеть рассмотреть Lua (ScriptEvaluate()
); этот API varadi c, поэтому он может адаптироваться к произвольной длине аргумента - вашему Lua просто нужно проверить размеры KEYS
и ARGV
(, описанные в документации EVAL
).