为什么Ioredis Client for Redis分片群集的性能很慢?

时间:2019-04-04 09:37:53

标签: node.js redis-cluster ioredis

当我尝试使用称为“ ioredis”的nodejs redis库连接到redis分片群集时,对redis分片群集的读写延迟非常高,并且不一致。例如,当我尝试读写大约100个键值对时,大约需要10-15秒。

我已经建立了一个6节点Redis分片集群(3个主节点和3个从节点),该集群在云(SCALEWAY CLOUD)中设置。当我尝试通过redis-cli进行读写时,速度非常快。我只能通过节点库ioredis观察到不一致。

var ioredis = require('ioredis');
var sync = require('sync');




var redisCluster =new ioredis.Cluster([
          {
            host:"redis-server-1",
            port:6379
          },
          {
            host:"redis-server-2",
            port:6379
          },
          {
            host:"redis-server-3",
            port:6379
          },
          {
            host:"redis-server-4",
            port:6379
          },
          {
          host:"redis-server-5",
          port:6379
        },
        {
          host:"redis-server-6",
          port:6379
          }
        ]);


var startDate = new Date();
var total = 0;
//var total2 = 0;
for(var i = 0;i<10000;i++){
redisCluster.set("fookar"+i,"barkar"+i,function(err,res){
if(err){
console.log(err);
}
else{
var endDate   = new Date();
var seconds = (endDate.getTime() - startDate.getTime()) / 1000;
total = total+seconds;
startDate = endDate;
console.log(total+"set");
}
});
}

for(var i = 0;i<10000;i++){
redisCluster.get("fookar"+i,function(err,res){
if(err){
console.log(err);
}
else{
var endDate2   = new Date();
var seconds = (endDate2.getTime() - startDate.getTime()) / 1000;
total = total+seconds;
startDate = endDate2;
console.log(total+"get");
}
});
}

我希望延迟可以以毫秒为单位,因为它可以在一秒钟内处理数百万个事务。这是正常的行为,因为将重定向到要读取或写入密钥的服务器,或者我必须调整某些内容?

0 个答案:

没有答案