私はローカルマシンにRedisインスタンスをインストールしています。このインスタンスには、147,848のシリアル化されたオブジェクトが含まれています。私はすべてのオブジェクトを取得し、いくつかのロジックを適用する必要があります。私はかつてので最初に、私はWindowsローカルホスト上のRedisパフォーマンス
var keys = client.GetAllKeys();
としてすべてのキーを取得し、私はJSONを取得し、
var keys = client.GetAllKeys();
foreach (string key in keys)
{
var sobj = client.Get<string>(key);
MyClass desobj = JsonConvert.DeserializeObject<MyClass>(sobj);
myList.Add(desobj);
}
としてそれらをデシリアライズするためのキーを反復処理では、すべてのオブジェクトを取得する方法がないことを知ることがカムすべてのキーを取得し、すべてのオブジェクトを取得してデシリアライズするこのプロセスは、約32秒となります。 015万オブジェクト
- すべてのキー取得するため
は0.4秒
- 取得すべての値が16秒
- デシリアライズした取った6秒
1を有する別のRedisのインスタンスがあります百万個のオブジェクトと
- すべてのキーを取得すると、すべての値を取得する2秒
- を取ったが、64秒
- を取ったデシリアライズは29秒に
を取ったパフォーマンスを改善する方法はありますか?
ボトルネックは前後に往復しているので、私はいくつか考えています:赤目の代わりにメモリ内の辞書を使用できますか?値は小さくて大きなオブジェクトに統合できますか?読取りを並列化できるように、複数のredisインスタンスを使用できますか? –