【发布时间】:2013-05-04 03:58:06
【问题描述】:
我对部署在我的 AWS EC2 Micro 实例(测试环境)上的 Redis 实例做了一个有趣的观察
我正在测量必须命中 Redis 的各种操作的执行时间。总而言之,执行时间(平均)如下所示:
Jedis -> Redis Connection is 63 milliseconds
Read of top Element in a list using lrange(<listname>,0,1) is 44 milliseconds
Read of entire Elements of set is 5ms
Iteration over entire Set space is 60ms( Set space approx 130 elements)
Iteration over subset of elements of set is 5ms ( Subset element size is 5)
现在让我担心的是前两个操作(连接和提取列表中的顶部元素)。
关于连接,代码如下:
Jedis redis= new Jedis("localhost");
对于列表中顶部元素的提取:
String currentDate = redis.lrange(holderDate,0,1).get(0);
现在来自 Redis lrange 命令文档:
时间复杂度:O(S+N),其中 S 是起始偏移量,N 是指定范围内的元素个数。
现在从我的代码中,S 为 0,N 为 1。
然后我的问题是:是什么导致了这些有些琐碎的操作的执行时间。
EC2 微型实例的特性是否会对这些操作的性能产生不利影响。
关于 Redis 部署的一些关键信息:
redis_version:2.4.10
used_memory:2869280
used_memory_human:2.74M
used_memory_rss:4231168
used_memory_peak:2869480
used_memory_peak_human:2.74M
mem_fragmentation_ratio:1.47
提前致谢。
【问题讨论】:
-
EC2 微型实例被严重限制。 IMO,试图对它们运行基准测试(甚至解释性能测量)是浪费时间。
-
@DidierSpezia:这是可以理解的,但应用程序需要限制哪些机器特性才能显示此类性能统计信息?请注意,Redis 实例与对其进行基准测试的应用程序部署在同一节点上。谢谢
标签: java amazon-ec2 redis jedis