Foggy Finder, мой комментарий относился именно к этому примеру. Я говорю что новичку предлагают для задержки вывода на консоль взять нетривиальную библиотеку, которая предназначена для многопоточности и асинхронности. А эти концепции ему не нужны в этом случае.
Что касается графических интерфейсов, то новичку не поможет простое использование правило "используй TPL". Ему нужно будет понять идеи многопоточности и асинхронности, понять что есть UI Thread и он делает определенные задачи. А без этого понимания он так же эффективно заблочит себе UI вызовом Task.Delay(1000).Wait() как и вызовом Thread.Sleep(1000). Абстракция Task "протекает" как и все остальные, приходится понимать внутреннее устройство.
Foggy Finder, я просто не очень понимаю использование TPL в случае если нет асинхронности в коде. И поток один. Microsoft конечно рекомендует использовать таски, мотивируя тем что потоки это «сложна-сложна», но в случае когда поток один, все синхронно, почему бы и не написать Thread.Sleep
zlodiak, у вас написано в вопросе так будто обе операции осуществляются в одной транзакции. По факту есть транзакция в редис и транзакция в постгрес. Одна может завершиться успешно, а другая - нет. Можно конечно городить какой-то механизм распределенной транзакции, но он не нужен в этом случае.
начало транзакции postgres
запись в postgres
конец транзакции
начало транзакции redis
запись в redis
конец транзакции
egorov_a, нет конкретных запросов — нет конкретных решений. Поэтому я и просил описать предметную область. Нужно делать партиции, причем функцию партицирования выбирать с умом. А если не хватает, то шардировать. Для запросов которые не вписываются можно дублировать данные в другую БД. Либо все-таки разделить данные на 2 хранилища: OLTP и OLAP, например держать в Mongo последний месяц, а за все время держать ClickHouse или еще чего. В любом случае нужно сначала отойти от постановки задачи "НАМ ВАЖНО ВСЕ И СРАЗУ" к "У НАС ЕСТЬ ИЕРАРХИЯ ЗАПРОСОВ ПО ВАЖНОСТИ"
egorov_a, было бы проще если бы описали сами данные (в терминах реального мира) и типовые запросы к ним. Потому что в большинстве случаев оптимизация идет под конкретный запрос.