Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 当redis批量插入时读取redis_Performance_Redis_Insertion - Fatal编程技术网

Performance 当redis批量插入时读取redis

Performance 当redis批量插入时读取redis,performance,redis,insertion,Performance,Redis,Insertion,我有一台服务器整天运行,使用redis作为数据存储。每天特定时间(凌晨3点)有一个巨大的数据更新(近1000万行),其他时间有很多实时数据更新,但很少有数据更新(近100行) 我选择redis mass插入模式来加速数据插入,这需要30秒。但当时,redis的查询性能非常差。有什么办法可以避免这个问题吗 如果我使用redis主从模式来分离读写,主写和从读。但是当批量插入发生在主机上时,还有很多数据需要同步到从机,我怀疑它是否仍然是从机redis上查询的热点 对这种塞纳里奥有什么建议吗 谢谢。首先

我有一台服务器整天运行,使用redis作为数据存储。每天特定时间(凌晨3点)有一个巨大的数据更新(近1000万行),其他时间有很多实时数据更新,但很少有数据更新(近100行)

我选择redis mass插入模式来加速数据插入,这需要30秒。但当时,redis的查询性能非常差。有什么办法可以避免这个问题吗

如果我使用redis主从模式来分离读写,主写和从读。但是当批量插入发生在主机上时,还有很多数据需要同步到从机,我怀疑它是否仍然是从机redis上查询的热点

对这种塞纳里奥有什么建议吗


谢谢。

首先,我要调查瓶颈在哪里。是网络I/O吗?您可能需要设置一个带有(虚拟)nic的专用路由,甚至一个专用internet连接来解决这个问题。是CPU吗?您可能希望展开体量插入

如果您使用简单的非事务性管道,它应该给redis喘息的时间,这样客户端就不会注意到大规模插入

另一种方法是使用客户端连接。让客户机连接到另一个从机,您暂时将其升级为主机。在批量插入完成后,让客户机再次连接到“真实”从机。您可能可以使用redis sentinel实现这一点,但使用redis pub/sub,您可以实现相同的结果,但需要更多的控制。使用单独的小型redis实例,将redis连接主机/端口存储在
HSET


希望这能有所帮助,TW

是否使用redis cli--pipe执行大规模插入?它非常擅长饱和带宽,因为这可能是将数据插入Redis的最快方式。看起来,如果其他事情不起作用的话,可以选择稍微限制插入速度。