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

Stackexchange.Redisのファイア・アンド・フォーゲットは配信を保証しますか?

    実際、Redisプロトコルは「起動して忘れる」操作を実際にはサポートしていません。 pub / subトラフィックを除いて、すべてのRedisコマンドは応答と照合され、Redisサーバーに応答を省略するように指示する方法はありません。

    現在、一部のクライアント(StackExchange.Redisなど)は、プロトコルの非同期実装を通じて「ファイアアンドフォーゲット」モードをシミュレートしています。実際、StackExchange.Redisの「ファイアアンドフォーゲット」モードは「非同期」モードと非常によく似ていますが、応答が受信されたときに単に破棄される点が異なります。

    信頼できますか?まあ、TCP / IPが配信を保証する限り、それは配信を保証します。ネットワークはパケットの送信を一生懸命試みますが(最終的には、一部のパケットが失われた場合、パケットは再度送信されます)、これはすべてTCPによって処理されます。

    これで、サーバーがダウンした場合、または接続を閉じることにした場合、クライアントはソケットからの読み取りを試みたときにのみ認識します。 StackExchange.Redisは、しばらくの間、接続が切断されたときにコマンドを送信し続ける可能性があります。中間層(Twemproxyなど)がある場合、状況はさらに悪化する可能性があります。

    つまり、「ファイアアンドフォーゲット」トラフィックは通常サーバーに送信され、ネットワーク上でメッセージが失われることはありませんが、サーバーまたは接続に問題がある場合、クライアントが気付く前に一部のトラフィックが失われる可能性がありますそれ。これをベストエフォートの行動と呼びます。




    1. ISODateの--queryを指定してmongoexportを使用します

    2. ハンドルバー:プロパティが親の独自のプロパティではないため、プロパティを解決するためのアクセスが拒否されました

    3. セロリとRQを使用することの長所と短所

    4. MongoDBドキュメント内の特殊文字を含む文字列を検索しています