我有一台全天候运行的服务器,使用 Redis 作为数据存储。每天在特定时间(凌晨3点)有一次巨大的数据更新(近1000万行),其他时间更新的数据很多(近100行)。
我选择redis mass insertion方式加速数据插入,耗时30秒。但是那个时候redis的查询性能真的很差。有什么办法可以避免这个问题吗?
如果我用redis主从模式,读写分离,主写,从读。但是当master批量插入时,也有大量数据需要同步到slave,怀疑还是slave redis查询的热点。
对这种senario有什么建议吗?
谢谢。
最佳答案
首先,我会调查瓶颈在哪里。是网络 I/O 吗?您可能想要设置一个带有(虚拟)网卡的专用路由,甚至是一个专用的互联网连接来解决这个问题。是中央处理器吗?您可能想要分散大量插入。
如果您使用简单的非事务性流水线,它应该给 redis 喘息的时间,这样客户就不会注意到大量插入。
另一种方法是使用客户端连接。让客户端连接到您临时提升为主控的另一个从站。批量插入完成后,让客户端再次连接到“真正的”奴隶。您可以为此使用 redis sentinel,但使用 redis pub/sub 可以实现相同的结果,但具有更多控制权。使用一个单独的小型 redis 实例,其中 redis 连接主机/端口存储在 HSET
中。
希望这有帮助,TW
关于performance - redis批量插入时读取redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22419378/