Redis plus plus set 在循环中非常延迟
Redis plus plus set is very delayed in loop
我正在尝试在这段代码中将数据设置到 Redis 集群:(我正在使用这个 https://github.com/sewenew/redis-plus-plus#redis-cluster)
QByteArray request = m_client.readAll();
qDebug() << "get data from" << bk[static_cast<int>(id) - 1];
QString mess = QTextCodec::codecForMib(106)->toUnicode(request);
// messss.fromUtf8(request);
QStringList l_mess = mess.split("|");
QRegularExpression key("\"key\": \"(.*?)\"");
QRegularExpressionMatch m_key;
qDebug() << "Count " << l_mess.count();
for (int i = 0; i < l_mess.count(); i++)
{
m_key = key.match(l_mess[i]);
cluster1->set(m_key.captured(1).toStdString(), l_mess[i].toStdString());
cluster1->rpush("fonbet", "i"/*m_key.captured(1).toStdString()*/);
}
而当l_mess.count()刚刚超过100或200时,"for"循环中的延迟时间超过20秒!!
我试过设置静态key-value,但是延迟是一样的。我做错了什么?
您正在发送 200-400 个命令,您看到每个命令有 200-400 毫秒,大部分时间是网络延迟,RTT(往返时间)。
要提高性能,请使用 pipeline 减少 RTT。
当涉及到集群时,请务必查看 Pipeline and Transaction of redis-plus-plus 部分。
我正在尝试在这段代码中将数据设置到 Redis 集群:(我正在使用这个 https://github.com/sewenew/redis-plus-plus#redis-cluster)
QByteArray request = m_client.readAll();
qDebug() << "get data from" << bk[static_cast<int>(id) - 1];
QString mess = QTextCodec::codecForMib(106)->toUnicode(request);
// messss.fromUtf8(request);
QStringList l_mess = mess.split("|");
QRegularExpression key("\"key\": \"(.*?)\"");
QRegularExpressionMatch m_key;
qDebug() << "Count " << l_mess.count();
for (int i = 0; i < l_mess.count(); i++)
{
m_key = key.match(l_mess[i]);
cluster1->set(m_key.captured(1).toStdString(), l_mess[i].toStdString());
cluster1->rpush("fonbet", "i"/*m_key.captured(1).toStdString()*/);
}
而当l_mess.count()刚刚超过100或200时,"for"循环中的延迟时间超过20秒!!
我试过设置静态key-value,但是延迟是一样的。我做错了什么?
您正在发送 200-400 个命令,您看到每个命令有 200-400 毫秒,大部分时间是网络延迟,RTT(往返时间)。
要提高性能,请使用 pipeline 减少 RTT。
当涉及到集群时,请务必查看 Pipeline and Transaction of redis-plus-plus 部分。