Windows localhost

时间:2016-08-28 16:35:55

标签: c# windows performance redis

我在本地计算机上安装了Redis实例。该实例包含147,848个序列化对象。我需要检索所有对象,然后应用一些逻辑。我想知道没有办法一次检索所有对象,所以首先我得到所有的密钥

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秒

对于0.15万个物体

  1. 获取所有密钥需要0.4秒
  2. 获取所有值需要16秒
  3. 反序列化需要6秒
  4. 还有另一个Redis实例,它有100万个对象和

    1. 获取所有密钥需要2秒
    2. 获取所有值需要64秒
    3. 反序列化需要29秒
    4. 有没有办法改善表现?

1 个答案:

答案 0 :(得分:0)

我认为您可以通过使用多个线程来提高性能(您可以使用c#parallel)。请注意,Redis不是单线程应用程序,永久性的获得将在DeSerializing步骤中。

如果我是你,我会测量获取所有键,所有值和反序列化所有值所需的时间。通过这些信息,您可以更好地了解哪个部分最慢。