sql >> データベース >  >> NoSQL >> Redis

StackExchange.Redisで非同期コマンドとTask.WhenAnyが待機した後のタイムアウト例外

    チャットでの長い議論と多くの掘り下げに基づくと、いくつかのあいまいなシナリオでは、.TrySetResultのようなことをしているときに、TPLが専用のリーダースレッドを乗っ取っているようです。 (これは:私たちは頻繁に行います)。これにより、同期呼び出しを行うと瞬時にデッドロックが発生します。これは、タスクの完了を待機している場合(それ自体でのみ完了する)、ソケットデータを処理できない可能性があるためです。実際には、これを防ぐために特にコードを配置しています。 、しかし回避策は実際には強制のようです 他のいくつかのシナリオで発生します。これは...恐ろしいです。私は私が見つけることができるものを見るでしょう。しかし、基本的に、問題は現在一部の限定されたシナリオTaskCompletionSource.TrySetResult 同期継続を実行するためにTPLに電力を供給しています。これには、Task.WhenAnyが含まれます 。




    1. EU地域のAWSに地理的に分散したMongoDBクラスター

    2. マングース、オブジェクトの配列の値を更新

    3. セカンダリインデックスでのRedisサポート

    4. Redis/NoSQLでの概念化についてサポートが必要