一台服务器上的应用程序查询另一台服务器上运行的 Redis。查询的结果数据集约为 250kzrangebyscore objects:locations -inf +inf
这在应用程序服务器上似乎需要 40 秒。
当使用命令执行时redis-cli
在 redis 服务器或应用程序服务器上,在这两种情况下,它们也需要大约 40 秒才能完成,如redis-cli
.
Redis服务器在查询过程中使用了大约15%的CPU。
问题:花 40 秒检索 250k 条记录算慢吗?是否可以将其加快到几秒钟?
首先,这取决于物品的平均尺寸。
在我的系统上,使用 zrangebyscore 检索 10 字节的 250K 项仅需要 113 毫秒。
对于 100 字节的项目,需要 228 毫秒。对于 1 Kb 的项目,需要 4033 毫秒。
因此,除非您的物品比这大得多,否则我想说您 40 秒的响应时间非常糟糕。
Redis 的设计不能很好地与虚拟内存配合使用。如果Redis内存被换出,性能通常是灾难性的,所以我想说你的第一个行动应该是避免Redis内存被换出。
我会尝试转储 Redis 数据库(使用 bgsave,以确保所有页面都回到 RAM 中),然后再次尝试 zrangebyscore(多次)以查看响应时间是否更好。
Update:
这是我用来构建内容的命令:
$ python -c 'for x in range(0,250000): print "ZADD objects:locations 0.1 %0115d" % (x)' | redis-cli | wc
这是我用来计时查询的命令:
$ time redis-cli -h <hostname> zrangebyscore objects:locations -inf +inf >/dev/null
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)