redisのrdbデータファイルをダンプするツールを書いています。'sync'コマンドを送信してスレーブとして保存します。次に、rdbをkeys、valuesに解析します。ただし、ネットワークから直接読み取った場合、rdbを解析できません。ネットワークデータをファイルに書き込み、代わりにファイルをペアリングするとうまく機能します。どうしてか分かりません 。コードはネットワークを解析し、ファイルは完全に同じです。ネットワークの解析とファイルの解析に違いはありますか?
ありがとう !
----------------更新------------------
問題は解決しました:
それは私のせいです、私はネットワークプログラミングに精通していません。読み取りシステムコールを間違った方法で使用しました。
例:
ネットワークからSIZEバイトを読み取りたい、と書いた:
nread = read(fd,buf,SIZE)
nreadがSIZEに等しいと仮定した。これは、ほとんどの場合ファイルの読み取りには適していますが、ほとんどの場合ネットストリームの読み取りには機能しません。そのため、代わりにredisreplication.cでsyncReadを使用します。
私が問題を解決するのを手伝ってくれてありがとう!