我在我的部署在AWS EC2微实例(测试环境)上的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
感谢您的提前帮助。