我在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());
上面的代码有问题吗?是因为反序列化导致它变得如此之慢?谢谢!
答案 0 :(得分:1)
每当处理远程数据存储时,请考虑尽可能使用批处理方法。例如在ServiceStack.Redis中,您可以使用AddRangeToList将多个项目添加到列表中。
Redis 中的每项操作都会进行网络通话,您希望尽可能地进行优化。 RedisClient中有许多批处理操作,它还支持Pipelining和Transactions,它们都是pipelined (redis docs),并允许您以少得多的套接字写入批处理多个操作。