当我尝试使用称为“ 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");
}
});
}
我希望延迟可以以毫秒为单位,因为它可以在一秒钟内处理数百万个事务。这是正常的行为,因为将重定向到要读取或写入密钥的服务器,或者我必须调整某些内容?