Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Wyjątek limitu czasu po poleceniach asynchronicznych i Task.WhenAny czeka w StackExchange.Redis

W oparciu o długą dyskusję na czacie i dużo kopania, wygląda na to, że w niektórych niejasnych scenariuszach TPL przechwytuje dedykowany wątek czytnika, gdy robimy takie rzeczy jak .TrySetResult (co:robimy często). Powoduje to natychmiastowe zakleszczenie, jeśli wykonujesz wywołanie synchroniczne, ponieważ prawdopodobnie nie może przetworzyć żadnych danych gniazda, jeśli jest zajęty oczekiwaniem na zakończenie zadania (które zawsze zostanie ukończone samo). W rzeczywistości mamy kod specjalnie, aby temu zapobiec , ale wygląda na to, że obejście faktycznie wymusza tak się stanie w niektórych innych scenariuszach. Co... jest okropne. Zobaczę, co uda mi się znaleźć. Ale w zasadzie problem polega na tym, że obecnie , w niektórych ograniczonych scenariuszach , TaskCompletionSource.TrySetResult daje prawo TPL do uruchamiania synchronicznych kontynuacji. Obejmuje to Task.WhenAny .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Przechowywanie wartości zwracanej przez node.js setTimeout w redis

  2. Redis — najlepszy sposób na przechowywanie dużej mapy (słownik)

  3. Połącz się z AWS ElastiCache z szyfrowaniem podczas transportu + uwierzytelnianiem z klienta innego niż redis-cli+stunnel

  4. Ciągi znaków Redis a skróty Redis reprezentujące JSON:wydajność?

  5. Klient Java do podłączenia węzła pamięci podręcznej ElasticCache Redis