Redis 225 ms检索哈希值

时间:2017-06-17 18:46:29

标签: sql-server redis

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

虚拟化环境中的内置延迟最差时间仅为9000微秒。

我甚至无法理解在内存中完全缓存的内容比在sql中获取相同数据所花费的时间更长。 redis服务器大约需要两倍的时间。以下是此字符串的示例。

[ {"name":"Christopher", "advocate": "John"}, {"name": "Jane", "advocate": "John"}, etc..]

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

|    name     | advocate |
| ----------  | -------- |
| Christopher | John     |
| Jane        | John     |

Hash中的大型对象是否缺少某些可以改善性能的内容?如果完全相同的查询内存比sql慢,我无法证明任何人都可以使用Redis。我理解一旦我开始增加sql中的连接复杂性,我可以看到更多的重要性。但我只是觉得在Redis中我可能会失踪的更多。

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

2 个答案:

答案 0 :(得分:1)

这并不令人惊讶。

SQL Server使用TDS返回数据。该协议旨在有效地返回表格数据。它不会重复每行的字段名称 - 这在JSON对象中会发生。我的猜测是JSON表示实际上比TDS表示更大。由于此用例受网络带宽限制(超过延迟),因此Redis似乎更慢。

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

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

答案 1 :(得分:0)

使用msgpack提高性能。关于绩效基准的参考链接 - https://jsperf.com/msgpack-vs-json-perf/3