`

使用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
分享到:
评论

相关推荐

    REDIS_redis的工具包_redisinlabview_labviewredis_labview调用redis_redis

    总结来说,`REDIS_redis的工具包`提供了在LabVIEW中无缝集成Redis的能力,使得LabVIEW程序能够利用Redis的强大功能,实现高效的数据存储和通信。通过深入理解和实践,开发者可以构建出满足各种需求的LabVIEW-Redis...

    php_redis.dll,php的redis扩展文件64位

    这个扩展允许开发者充分利用Redis的功能,如数据结构(字符串、哈希、列表、集合和有序集合)、事务处理、发布/订阅模式以及更多高级特性。PHP Redis扩展使得在PHP应用程序中实现高效、低延迟的数据存储和检索成为...

    Redis实战_Redis实战中文完整版_Redis快速入门_Redis数据类型及操作_Redis常用

    10. **运维与监控**:如何监控Redis的状态,如使用`INFO`命令查看统计信息,以及使用第三方工具如Redis Monitor、Grafana等进行实时监控。 通过《Redis实战》的学习,读者不仅可以掌握Redis的基本操作,还能了解到...

    redis-unstable.zip_Redis C_c redis_redis_redis c++_visual c

    这个压缩包“redis-unstable.zip”包含了Redis的C语言源代码,这对于理解其内部工作原理和进行二次开发非常有帮助。Redis的源码是用C语言编写的,同时也涉及到C++的部分,适合对C/C++有基础的开发者深入学习。 1. *...

    myredis_redis_springboot_springboot+Redis_DEMO_

    通过阅读和运行这个DEMO,你可以更好地理解如何在实际项目中运用SpringBoot和Redis进行集成,如何配置和使用各种Redis功能,以及如何编写和测试相关代码。 总结,"myredis_redis_springboot_springboot+Redis_DEMO_...

    redis_win_x64_x32 redis服务端 绿色免安装版本

    4. **事务**:Redis支持简单的事务功能,允许一次性执行多个命令,确保它们在同一操作中原子化执行。 5. **命令行接口**:`redis-cli`是Redis的命令行客户端,用于与Redis服务器交互。在这个绿色版中,你可以通过...

    redis视频下载地址(百度云)

    Redis_初探_1.mp4 Redis_初探_2.mp4 Redis_初探_3.mp4 Redis_安装_字符串键_1.mp4 Redis_安装_字符串键_2.mp4 Redis_安装_字符串键_3.mp4 Redis_字符串键_BitMap操作_1.mp4 Redis_字符串键_BitMap操作_2.mp4 Redis_...

    distr-redis-master.zip_C++操作Redis_redis c++_redis c++_redis分布式_

    在IT领域,Redis是一个广泛应用的高性能键值存储系统,常被用作数据库、缓存和消息中间件。...通过学习和理解这些代码,你将能够更好地理解和使用C++操作Redis的方法,特别是进行分布式操作时的策略和技巧。

    fill_redis.zip_python_redis_redis Python

    本教程将详细介绍如何使用Python的`redis-py`库封装一个名为`RedisHelper`的类,以便更方便地操作Redis。 首先,我们需要安装`redis-py`库。通过Python的包管理器pip,可以轻松完成安装: ```bash pip install ...

    redis相关jar包.rar_rabbit1cc_redis_redis jar_redis jar包_redis.jar

    8. 主从复制:Redis支持主从复制,可以实现数据的备份和负载均衡。 在实际开发中,开发者通常会将`redis.jar`添加到项目构建路径中,通过导入相关的Java类和方法,轻松地在Java应用中使用Redis服务。例如,创建`...

    php5.6下的redis扩展(redis/php_redis.dll/php_igbinary.dll)windows环境

    在PHP开发中,Redis是一个非常流行的键值存储系统,常被用作缓存和数据持久化解决方案。在Windows环境下配置PHP以使用Redis扩展,可以显著提升Web应用的性能...现在你可以利用Redis的强大功能来加速你的Web应用程序了。

    C++ Redis 客户端简单使用

    本篇文章将深入探讨如何在C++中简单使用Redis客户端。 首先,为了在C++中与Redis进行交互,我们需要一个支持C++的Redis客户端库。常见的选择有`hiredis`,这是一个轻量级的C库,同时也提供了C++绑定。另一个是`cpp-...

    redis视频教程百度网盘下载地址及密码

    2016122201_Redis_初探_1.mp4 2016122201_Redis_初探_2.mp4 2016122201_Redis_初探_3.mp4 2016122202_Redis_安装_字符串键_1.mp4 2016122202_Redis_安装_字符串键_2.mp4 2016122202_Redis_安装_字符串键_3.mp4 ...

    PyPI 官网下载 | redis_simple_orm-1.1.0-py3-none-any.whl

    **PyPI 官网下载 | redis_simple_orm-1.1.0-py3-none-any.whl** 在Python开发中,PyPI(Python Package Index)是官方的第三方Python软件包仓库,开发者可以在这里发布和分享自己的Python库。`redis_simple_orm`是...

    Redis开发运维实践指南.zip_redis_redis入门指南_redis权威指南

    安装Redis相对简单,通常通过源码编译或使用预编译包进行。配置文件`redis.conf`是关键,包含了服务器端口、数据库数量、最大客户端连接数、内存限制、持久化策略等设置。根据实际需求,需仔细调整这些配置项以确保...

    Go-ratelimit使用Redis来Ratelimit限制你的方法

    你可以根据需要扩展这个例子,使用Redis的其他特性,如Lua脚本来实现更复杂的功能。 总结来说,通过结合Go语言和Redis,我们可以有效地实现ratelimit功能,保护我们的服务免受高并发或恶意攻击的影响。同时,Redis...

    api.rar_Token 使用redis_django_exclaimedthp_redis_roselgr

    `api.rar_Token 使用redis_django_exclaimedthp_redis_roselgr`这个标题暗示了我们在讨论一个使用Redis作为存储机制,来处理Django框架中的Token验证的场景。这里的`exclaimedthp`和`roselgr`可能是项目或特定组件的...

    Java基于redis实现分布式锁代码实例

    通过使用 Redis 的 setnx 命令和 expire 命令,可以实现分布式锁的功能。但是,需要注意的是,在实现分布式锁时,需要考虑到各种可能的异常情况,例如服务器挂掉等,并且需要对分布式锁进行优化,例如加过期时间,...

    redis-6.2.6_win10.zip

    由于Redis官方并未直接提供Windows版,描述中提到的“目前redis6版本没有win版本”,意味着这个软件包是通过第三方工具或方法,如Cygwin64,将源代码编译为适合Windows 10环境的可执行文件。 Cygwin64是一个Linux...

    csredisv3.4.1_redis_c#redissetnx_REDISC#_C#redis_c#redis封装_

    本压缩包包含的是CSRedis客户端库的源代码,可以帮助开发者在C#项目中方便地集成和使用Redis服务。 在C#中使用Redis,首先要理解Redis的数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)...

Global site tag (gtag.js) - Google Analytics