巨大なデータにpython dictを使用するとパフォーマンスが低下するため、なんとかredisに移行しました。だから私は次のものを持っています:
"doc1" => ('989', 4.0), ('99', 4.0), ('990', 4.0), ('991', 4.0), ('992', 4.0), ('993', 4.0), ('994', 4.0), ('995', 4.0), ('996', 4.0), ('997', 4.0), ('998', 4.0), ('999', 4.0)
"doc2" => ('4', 4.0), ('21', 4.0), ('55', 4.0), ('991', 4.0), ('992', 4.0), ('993', 4.0), ('994', 4.0), ('995', 4.0), ('996', 4.0)
"result" => ('991', 8.0), ('992', 8.0), ('993', 8.0), ('994', 8.0), ('995', 8.0), ('996', 8.0), ('99', 4.0),('4', 4.0), ('21', 4.0), ('55', 4.0)
ご覧のとおり、doc2 に存在する doc1 に要素がある場合はその値を合計し、doc1 の要素が doc2 に存在しない場合は、python を使用して 2 つの redis リストを 1 つに結合したいと考えています。要素から結果へ。dict を使用した以前の実装は次のとおりです。
result_array = {k: [db_array.get(k, result_array.get(k))[0],db_array.get(k, dv)[1] + result_array.get(k, dv)[1]] for k in set(db_array) | set(result_array)}
ご覧のとおり、このソリューションは次の目的で使用されます。
{'991': [4.0, 's.text'], '21': [4.0, 't.text'], '990': [4.0, 'b.text']}
しかし、redis は list in list をサポートしていないため、別の解決策を見つける必要があります。