?简介:
?????我们知道redis的自带的复制功能,是在slave连上master之后,master会将全部数据通过rdb存储之后发送到slave,增量的数据再通过aof文件格式传输,当数据量比较大的时候,这样会对master服务造成影响,尤其是网络不太稳定的时候,redis会重新进行全量的复制,虽然2.8之后可以部分复制了,但是依然不是完全可靠的,所以,为了能让服务更加稳定的运行,我换了一个思路,采用拉的方式来进行同步,具体流程如下图:
?????files.note.sdo.com/Z1AGEC7E81DD688D97370440883C8C38AF49A313" title="麦库截图20141411145914189.jpg">?
?
实现步骤:
(1) master redis开启aof, 具体参考?http://redis.io/topics/persistence?,启动master & slave, 本例中master为6379端口,slave为6380端口
(2) 下载simple_flow, git clone?https://github.com/hongliuliao/simple_flow
(3) 编译出需要的文件: make && make test
(4) 启动?redis_repl_flow_server: ./bin/redis_repl_flow_server
(5) 启动 fileagent:?./bin/file_agent localhost 3491 ~/programs/redis-2.8.13/appendonly.aof?
?
验证:
(1) 向master写一条数据,?echo "set test9 abd" | nc localhost 6379?
(2) 从slave查询数据:?echo "get test9"| nc localhost 6380 , 如果响应如下,表示成功
?
?
代码: 可以在test目录下的redis_repl_flow_server.cpp??中查看,核心代码约10行
ps: 现在只是实现了基本功能,后面会继续完善