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