redis作为一种cache服务器,其功能是非常强大的。
redis还提供了master-slave机制,slave同步时间在测试机上如下图(单位ms)。图中master和slave分布在两个机房,访问时间在0.88ms左右。
然而在http://redis.io/topics/replication 有这么一句话: When a master and a slave reconnects after the link went down, a full resync is performed.
这就代表假设redis中有10G数据,然后slave redis因为任何原因断开连接,slave要重新同步这10G数据。在slave需要接受read操作时且网络不稳定状态,随着数据量增大,肯定会出现问题。
为解决这个问题,重新设计了redis同步策略:首先,在redis中存储一个list,当有数据来时,插入list;其次,本地脚本监控队列,不为空,取数据同步到slave机。
这样设计可以保证在master和slave间网络断掉时,不需要重新同步所有数据,只需要同步list中数据。
list操作:http://www.cnblogs.com/stephen-liu74/archive/2012/02/14/2351859.html
代码后续