Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Redis 225 ms哈希值检索_Sql Server_Redis - Fatal编程技术网

Sql server Redis 225 ms哈希值检索

Sql server Redis 225 ms哈希值检索,sql-server,redis,Sql Server,Redis,我是Redis的新手,我不确定为什么这个查询需要这么长时间。它本质上是一个json对象的7mb字符串。我使用了HGet键数据,平均耗时225毫秒。这实际上比同一虚拟化环境中的sql server慢。它们也有相同的分配资源 虚拟化环境中的内置延迟在最糟糕的情况下只有约9000微秒 我甚至无法想象,完全缓存在内存中的东西怎么会比在sql中获取相同的数据花费更长的时间。redis服务器的运行时间大约是原来的两倍。下面是一个字符串示例 [{“姓名”:“克里斯托弗”,“辩护律师”:“约翰”},{“姓名”:

我是Redis的新手,我不确定为什么这个查询需要这么长时间。它本质上是一个json对象的7mb字符串。我使用了
HGet键数据
,平均耗时225毫秒。这实际上比同一虚拟化环境中的sql server慢。它们也有相同的分配资源

虚拟化环境中的内置延迟在最糟糕的情况下只有约9000微秒

我甚至无法想象,完全缓存在内存中的东西怎么会比在sql中获取相同的数据花费更长的时间。redis服务器的运行时间大约是原来的两倍。下面是一个字符串示例

[{“姓名”:“克里斯托弗”,“辩护律师”:“约翰”},{“姓名”:“简”,“辩护律师”:“约翰”}等]

sql只是一个包含完全相同信息的表

|    name     | advocate |
| ----------  | -------- |
| Christopher | John     |
| Jane        | John     |
对于
散列
中的较大对象,是否缺少可以提高性能的内容?如果完全相同的查询在内存中比sql慢,我无法向任何人证明使用Redis是合理的。我知道,一旦我开始增加sql中的连接复杂性,我就会看到更多的重要性。但我只是觉得在Redis中我可能会错过更多


如果您需要,我可以提供更多细节。

这并不令人惊讶

SQLServer使用TDS返回数据。该协议旨在高效地返回表格数据。它不会重复每一行的字段名——这发生在JSON对象中。我猜JSON表示实际上比TDS表示更大。由于此用例受网络带宽(大于延迟)的限制,Redis的速度似乎较慢

请注意,Redis并没有特别优化以存储和返回大型对象


225ms的7MB表示31MB/s。这显然取决于管道的大小,但对于虚拟化环境来说,它看起来并不是那么糟糕。

使用msgpack来提高性能。关于性能基准的参考链接-

那么我可以做些什么来缩短时间呢?你提到了管道。如何增加管道的尺寸?您还提到了它没有优化,如何才能更有效地返回大型对象?我是否应该将这些对象分离成更多的键值,以减小大小,减少字段的json重复,并让我的键成为这些对象的表示形式?如果我不必从Redis操作json字段(即仅将数据存储为一个大blob)-然后我建议使用轻量级压缩算法(LZ4、Snappy、LZO等)压缩数据客户端。我所说的“管道”是指物理网络的带宽。在Redis中没有可调参数来提高检索大型对象的性能。请注意,无论您存储1个大对象还是大量小对象,JSON都不是数据的有效表示(这与Redis无关)-您可能希望使用更有效的表示(msgpack、协议缓冲区等)