環境: Ubuntu 10.04 64 ビット、Python Redis クライアント 2.4.1、Redis 2.4.8、Python 2.6.5
問題の説明:
私はいくつかの大きな Python 辞書 (key1:value1、key2:value2、...) を持っています。各キーは短い文字列で、各値は simplejson でダンプされた長い文字列です。辞書を異なる redis データベースに保存したいので、次のコードを使用しました: "r.mset(the_dictionary)"。あるディクショナリでは機能しますが、別のディクショナリでは「接続がピアによってリセットされました」というエラーが表示されます。辞書は同じ形式であると確信しています。致命的なエラーが出るのがおかしいと思いました。
さらに、問題の原因を特定するために次の手順を試しました。
- フラッシュされたデータベースから各ディクショナリを個別に Redis に挿入します (ディクショナリごとに 1 つの新しいサービス)。私はまだ最初の辞書挿入が機能し、2番目は失敗しました。
- 問題は2番目の辞書の内部にあると思われるので、変数の型と文字列の長さのチェックを試みました.すべてのキーと値は簡単なチェックに合格しました. しかし、まだ 2 番目の辞書の保存に失敗しています。
- 辞書の値を同じ定数変数に変更すると (たとえば、すべての値が "abc" に設定されます)、ストレージが機能します。
- 2 番目のペアの各キーと値に r.hmset を使用すると、同様に機能します。
しかし、なぜ "r.mset(the_dictionry)" がある辞書では機能するのに、別の辞書では失敗するのでしょうか?
辞書の値に何か問題があるか、Python クライアントに何らかのバグがあるはずです。
問題の原因を特定する方法がわかりません。いくつかの提案をお願いします。
Google を検索し、redis サーバー ログを試しましたが、まだ取得できません。
======フィードバックへの返信====== コード スニペットは次のとおりです。
db3 = redis.Redis(db=2)
db3.flushdb()
db3.mset(oov_dist_dict)
しかし、フィードバックに従って辞書を分割し、redis に挿入すると、うまくいきます。少し説明していただけますか? 公式文書には何の声明も見当たりませんでした。