iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >redis-shake同步redis数据的实现方法
  • 179
分享到

redis-shake同步redis数据的实现方法

2024-04-02 19:04:59 179人浏览 安东尼
摘要

目录前言Redis shake 简介基本功能基本原理环境准备一、安装redis二、redis shake使用步骤前言 和很多同步工具一样,redis shake为同步redis数据而

前言

和很多同步工具一样,redis shake为同步redis数据而存在。在很多场景下,如果不使用同步工具,如果需要同步redis数据是一件相对繁琐的事情,可能需要编写代码,专门来做同步这件事,这就对开发提出了较高的要求,需要考虑到各种场景,

有了redis shake 之后,同步redis数据库数据变得容易了很多,其实我们可以猜想,它应该利用了解析redis的rdb或aof的文件来达到数据同步的目的,事实上也差不多,有了之前的canal的使用经验,其同步思想也如出一辙;

redis shake 简介

git地址:redis shake 官方地址

redis-shake是阿里云Redis&mongoDB团队开源的用于redis数据同步的工具

基本功能

redis-shake是我们基于redis-port基础上进行改进的一款产品。它支持解析、恢复、备份、同步四个功能。以下主要介绍同步sync;

  • 恢复restore:将RDB文件恢复到目的redis数据库
  • 备份dump:将源redis的全量数据通过RDB文件备份起来;
  • 解析decode:对RDB文件进行读取,并以JSON格式解析存储;
  • 同步sync:支持源redis和目的redis的数据同步,支持全量和增量数据的迁移,支持从云下到阿里云云上的同步,也支持云下到云下不同环境的同步,支持单节点、主从版、集群版之间的互相同步。需要注意的是,如果源端是集群版,可以启动一个Redisshake,从不同的db结点进行拉取,同时源端不能开启move slot功能;对于目的端,如果是集群版,写入可以是1个或者多个db结点;
  • 同步rump:支持源redis和目的redis的数据同步,仅支持全量的迁移。采用scan和restore命令进行迁移,支持不同云厂商不同redis版本的迁移;

基本原理

edis-shake的基本原理就是模拟一个从节点加入源redis集群,首先进行全量拉取并回放,然后进行增量的拉取(通过psync命令)。如下图所示:

如果源端是集群模式,只需要启动一个redis-shake进行拉取,同时不能开启源端的move slot操作。如果目的端是集群模式,可以写入到一个结点,然后再进行slot的迁移,当然也可以多对多写入;

目前,redis-shake到目的端采用单链路实现,对于正常情况下,这不会成为瓶颈,但对于极端情况,qps比较大的时候,此部分性能可能成为瓶颈,后续我们可能会计划对此进行优化。另外,redis-shake到目的端的数据同步采用异步的方式,读写分离在2个线程操作,降低因为网络时延带来的同步性能下降;

更多内容请参阅官方说明

下面演示下,基于单节点模式下,使用redis shake完成redis两个节点数据库的完整过程;

环境准备

1、两个服务器虚拟机或云服务器);

2、redis 的llinux版安装包;

下载地址:https://redis.io/download

wget Https://download.redis.io/releases/redis-6.0.15.tar.gz

3、提前下载好 redis shake 安装包;

一、安装redis

在翻阅资料时,发现网上很多参考资料直接从redis shake开始,跳过了redis服务搭建步骤,为了方便学习和后续查阅,这里我们先快速搭建起redis服务,以便后面的演示;

1、更新机器的GCc相关依赖(本例redis为6.X版本,建议升级下gcc)

依次执行下面的命令

yum install Centos-release-scl scl-utils-build #安装scl源

yum install -y devtoolset-9-toolchain  #安装9版本的gcc、gcc-c++、gdb工具链

scl enable devtoolset-9 bash         #设置版本生效,并再次查看版本(gcc -v)

注意:scl命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本;

设置版本长期生效: echo “source /opt/rh/devtoolset-9/enable” >>/etc/profile

2、安装redis

tar -xzf redis-6.0.15.tar.gz

cd redis-6.0.15

make

3、进入redis主目录,修改redis.conf文件

以下列举出主要修改的配置项,其他配置保持默认就好

bind 0.0.0.0  #测试使用的时候,可以使用4个0,生产环境下建议绑定本机IP

protected-mode no #是否开启保护模式,测试使用时候可以使用no

port 6379 #对外暴露的端口

requirepass 123456  #是否设置客户端连接密码【测试时候嫌麻烦可以注释掉】

daemonize no  #是否使用守护进程方式启动服务【测试使用时,可以使用no,即启动时候图形化展示】

4、进入src目录,启动redis服务

./redis-server …/redis.conf

5、进入src目录,启动客户端验证下

./redis-cli 或 ./redis-cli -p 3306

通过以上步骤,redis服务就搭建完毕,使用同样的方法在另一个机器上也把redis服务搭建起来吧;

二、redis shake使用步骤

1、下载redis shake安装包(上文已说明);

2、解压安装包;

tar -zxvf redis…
mv redis-shake-v2.0.3 redis-shake

3、进入主目录,修改 redis-shake.conf 文件

其实使用redis-shake 和其他同步工具类似,主要是修改配置文件,根据自身的实际情况做调整,比如有的是主从模式,有的是哨兵模式,还有的是单机模式等,不同的模式,配置文件中的相关参数也需要做适当的调整;

如下列举出核心的需要修改的配置,结合了本例的实际情况,


# source redis configuration.
# used in `dump`, `sync` and `rump`.
# source redis type, e.g. "standalone" (default), "sentinel" or "cluster".
#   1. "standalone": standalone db mode.
#   2. "sentinel": the redis address is read from sentinel.
#   3. "cluster": the source redis has several db.
#   4. "proxy": the proxy address, currently, only used in "rump" mode.
# 源端redis的类型,支持standalone,sentinel,cluster和proxy四种模式,注意:目前proxy只用于rump模式。
source.type = standalone  #【单机模式下直接使用standalone 即可】

# 源redis地址
source.address = 127.0.0.1:6379  #【本例从本机同步到远程的redis上】

# passWord.
source.password_raw = 123456 #【如果没有设置密码,可以不用填】

# auth type, don't modify it
source.auth_type = auth


# target redis configuration. used in `restore`, `sync` and `rump`.
# the type of target redis can be "standalone", "proxy" or "cluster".
#   1. "standalone": standalone db mode.
#   2. "sentinel": the redis address is read from sentinel.
#   3. "cluster": open source cluster (not supported currently).
#   4. "proxy": proxy layer ahead redis. Data will be inserted in a round-robin way if more than 1 proxy given.
# 目的redis的类型,支持standalone,sentinel,cluster和proxy四种模式。
target.type = standalone  #【单机模式下直接使用standalone 即可】

# 目的redis地址
target.address = 目的地IP:6379

# password.
target.password_raw = 123456 #【如果没有设置密码,可以不用填】

# auth type, don't modify it
target.auth_type = auth
# version number, default is 6 (6 for Redis Version <= 3.0.7, 7 for >=3.2.0)

target.version = 6
# all the data will come into this db. < 0 means disable.
# used in `restore` and `sync`.
target.db = -1

# 当源目的有重复key,是否进行覆写
rewrite = true

其他的配置可以保持默认即可,在正式同步之前,我们先在本机上做几条测试数据

而在远程机器上,此时没有任何数据

然后在redis-shake主目录下,执行如下的同步命令

./redis-shake.linux -conf=redis-shake.conf -type=sync

看到下面的图示,表示执行成功,

 到此这篇关于redis-shake同步redis数据的实现方法的文章就介绍到这了,更多相关redis-shake同步redis数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: redis-shake同步redis数据的实现方法

本文链接: https://www.lsjlt.com/news/146775.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • redis-shake同步redis数据的实现方法
    目录前言redis shake 简介基本功能基本原理环境准备一、安装redis二、redis shake使用步骤前言 和很多同步工具一样,redis shake为同步redis数据而...
    99+
    2024-04-02
  • redis怎么实现数据同步
    Redis可以通过以下几种方式实现数据同步:1. 主从复制:Redis支持主从复制,即将一台Redis服务器作为主服务器,其他Red...
    99+
    2023-08-23
    redis
  • 利用Redis实现分布式数据同步
    利用Redis实现分布式数据同步随着互联网的快速发展和技术的日新月异,分布式系统已经成为当今大部分互联网应用的基础架构之一。在这样的系统中,数据的一致性是一个重要的问题,不同的节点需要实时同步数据以保证系统的稳定性和可靠性。而Redis作为...
    99+
    2023-11-08
    Redis分布式 同步数据
  • 异步redis队列实现 数据入库的方法
    业务需求 app客户端向服务端接口发送来json 数据 每天 发一次 清空缓存后会再次发送 出问题之前业务逻辑: php 接口 首先将 json 转为数组 去重 在一张大表中插入不存在的数据 该用户已经存在...
    99+
    2024-04-02
  • redis同步方法有哪些
    Redis的同步方法有以下几种:1. RDB持久化:将内存中的数据转存到硬盘上的RDB文件中,通过设置Redis的持久化策略可以定期...
    99+
    2023-08-24
    redis
  • redis如何实现session同步
    Redis可以通过以下几种方式实现session同步:1. 使用Redis Cluster:Redis Cluster是Redis自...
    99+
    2023-08-30
    redis session
  • 如何使用Redis实现分布式数据同步
    如何使用Redis实现分布式数据同步随着互联网技术的发展和应用场景的日益复杂,分布式系统的概念越来越被广泛采用。在分布式系统中,数据同步是一个重要的问题。Redis作为一个高性能的内存数据库,不仅可以用来存储数据,还可以用来实现分布式数据同...
    99+
    2023-11-07
    分布式 redis 数据同步
  • 浅谈MySQL数据同步到 Redis 缓存的几种方法
    目录1 mysql查完数据,再同步写入到Redis中2 Mysql查完数据,通过发送MQ,在消费者线程去同步Redis3 订阅Mysql的Binlog文件(可借助Canal来进行)4 延迟双删5 延迟双写6 总结1 My...
    99+
    2023-03-19
    MySQL数据同步到Redis缓存 MySQL数据同步
  • 浅谈MySQL数据同步到Redis缓存的几种方法
    目录1 Mysql查完数据,再同步写入到Redis中2 Mysql查完数据,通过发送MQ,在消费者线程去同步Redis3 订阅Mysql的Binlog文件(可借助Canal来进行)4...
    99+
    2023-03-19
    MySQL数据同步到Redis缓存 MySQL数据同步
  • 序列化数据同步到Redis中的方法是什么
    序列化数据同步到Redis中的方法有以下几种: 使用Redis自带的数据结构:Redis支持的数据结构包括字符串、列表、集合、有...
    99+
    2024-04-29
    Redis
  • redis集群数据如何同步
    这篇文章主要介绍了redis集群数据如何同步,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。redis没有像mysql那样复制位置的概念,所以Sl...
    99+
    2024-04-02
  • mysql和redis数据怎么同步
    可以通过将MySQL数据同步到Redis中来实现数据同步。以下是一种常见的方法: 编写一个定时任务或者触发器,在MySQL数据库上...
    99+
    2024-04-22
    redis mysql
  • redis数据持久化的实现方法
    小编给大家分享一下redis数据持久化的实现方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!Redis实现数据持久化的两种实现方式:RDB:指定的时间间隔内保存数据快照AOF:先把命令追加到...
    99+
    2024-04-02
  • 多台redis怎么实现同步
    要实现多台 Redis 之间的同步,可以有以下几种方法:1. 主从复制:在 Redis 中,可以通过配置主从复制来实现数据同步。设置...
    99+
    2023-09-11
    redis
  • redis数据怎么同步中间件
    Redis数据同步中间件可以使用Redis Sentinel或Redis Cluster来实现。1. Redis Sentinel:...
    99+
    2023-08-30
    redis
  • PHP实现Redis数据库集群的方法
    Redis是一种常用的内存数据库,其具有高速读写、丰富的数据结构以及持久化等特点,已经成为了Web应用程序中非常重要的工具之一。随着业务的扩张和数据量的增大,单台Redis服务器已经难以满足业务需求,此时就需要使用Redis数据库集群来保证...
    99+
    2023-05-15
    PHP redis 集群
  • PHP实现Redis数据库分片的方法
    Redis是一款高性能的NoSQL数据库,而分片是一种常用的数据分布式处理方法,可以提高数据库的性能和扩展性。本文将介绍如何使用PHP实现Redis数据库分片。Redis分片概述Redis分片是将一个大的Redis数据库拆分成多个较小的Re...
    99+
    2023-05-17
    PHP Redis数据库 分片 (Sharding)
  • PHP实现Redis数据库分表的方法
    随着互联网业务的发展,数据量的增长已成为一种趋势。在这个背景下,分表是解决大数据存储问题的一种常见方法。分表可以将一张大表拆分成多个小表,从而达到分散数据存储,提高查询效率的目的。Redis是一个高性能、内存存储的数据结构服务器,其中分表同...
    99+
    2023-05-15
    PHP 分表 Redis数据库
  • docker实现MySQL数据同步的方法
    大家好,今天分享一下docker的一个实战 我们使用docker 实现MySQL 的数据同步 搜索mysql 镜像 [root@localhost ~]# docker search...
    99+
    2024-04-02
  • canal使用说明:MySQL、Redis实时数据同步
    1. canal简介 canal是阿里开源的数据同步工具,基于bin log可以将数据库同步到其他各类数据库中,目标数据库支持mysql,postgresql,oracle,redis,MQ,ES等 ...
    99+
    2023-09-08
    mysql redis 数据库
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作