`

使用simple_flow 10行代码简单实现redis的复制功能

阅读更多

​简介:

    ​我们知道redis的自带的复制功能,是在slave连上master之后,master会将全部数据通过rdb存储之后发送到slave,增量的数据再通过aof文件格式传输,当数据量比较大的时候,这样会对master服务造成影响,尤其是网络不太稳定的时候,redis会重新进行全量的复制,虽然2.8之后可以部分复制了,但是依然不是完全可靠的,所以,为了能让服务更加稳定的运行,我换了一个思路,采用拉的方式来进行同步,具体流程如下图:

    ​

 

 

实现步骤:

(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: 现在只是实现了基本功能,后面会继续完善

  • 大小: 131.3 KB
  • 大小: 8.4 KB
0
5
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics