redis大量插入时读取redis

时间:2014-03-15 04:05:07

标签: performance redis insertion

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

我选择redis质量插入模式来加速数据插入,这需要30秒。但那时,redis查询性能非常糟糕。有什么想法可以避免这个问题吗?

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

关于这种senario的任何建议?

谢谢。

1 个答案:

答案 0 :(得分:2)

首先,我要调查瓶颈在哪里。是网络I / O吗?您可能希望设置具有(虚拟)网络的专用路由,甚至是专用的互联网连接来解决这个问题。是CPU吗?您可能希望分散大量插入。

如果您使用简单的非事务性流水线操作,它应该给redis时间呼吸,因此客户不会注意到大量插入。

另一种方法是使用客户端连接。让客户端连接到另一个从属服务器,您可以暂时将其提升为主服务器。大量插入完成后,您可以让客户端连接到真实的'奴隶了。你可能可以使用redis sentinel,但是使用redis pub / sub你可以完成相同的结果,但需要更多控制。使用单独的小型redis实例,其中redis连接主机/端口存储在HSET

希望这有帮助,TW