ServiceStack Redis C#缓慢检索数据

时间:2012-10-09 19:09:28

标签: c# redis deserialization servicestack

我在C#中使用Redis Servicestack。目前,我存储数据的方式如下:

var listTypedRedis = db.As<MyObject>();

foreach (var obj in myObjects)
{
       listTypedRedis.AddItemToList(listTypedRedis.Lists["urn:list"], obj);
}

我成功存储了大约6000条记录。我在检索记录时遇到问题,因为它似乎比SQL慢。

  

取得Redis 138ms,占用SQL 105ms

我正在检索数据的方式如下:

return (db.As<MyObject>().Lists["urn:list"].GetAll());

上面的代码有问题吗?是因为反序列化导致它变得如此之慢?谢谢!

1 个答案:

答案 0 :(得分:1)

每当处理远程数据存储时,请考虑尽可能使用批处理方法。例如在ServiceStack.Redis中,您可以使用AddRangeToList将多个项目添加到列表中。

Redis 中的每项操作都会进行网络通话,您希望尽可能地进行优化。 RedisClient中有许多批处理操作,它还支持PipeliningTransactions,它们都是pipelined (redis docs),并允许您以少得多的套接字写入批处理多个操作。