基于Redis-Shake實現(xiàn)Redis實時同步的示例代碼
一、前言
Redis-Shake是阿里云技術(shù)團隊開源的一款Redis數(shù)據(jù)遷移與處理工具,支持數(shù)據(jù)遷移、備份、恢復(fù)和實時同步等多種功能。能夠幫助你在不同Redis環(huán)境之間穩(wěn)定高效的移動數(shù)據(jù)。
核心功能
- sync(同步):支持全量數(shù)據(jù)遷移和增量數(shù)據(jù)實時同步,適用于業(yè)務(wù)不停服遷移、異地容災(zāi)、多活架構(gòu)
- dump(備份):將源Redis的數(shù)據(jù)備份到RDB文件中,適用于為數(shù)據(jù)備份、數(shù)據(jù)恢復(fù)做準備
- Restore(恢復(fù)):將RDB文件中的數(shù)據(jù)恢復(fù)到目標Redis實例。適用于數(shù)據(jù)恢復(fù)、從備份文件快速搭建新環(huán)境
- rump(掃描): 通過SCMP命令遷移數(shù)據(jù),適用于不支持SYNC/PSYNC命令的環(huán)境。適用于遷移Codis、Twemproxy等代理架構(gòu)的數(shù)據(jù)
二、實施步驟
2.1 下載redis-shake二進制安裝包
#wget https://github.com/alibaba/RedisShake/releases/download/v3.1.7/redis-shake-linux-amd64.tar.gz #tar zxvf redis-shake-linux-amd64.tar.gz -C /root/
2.2 配置rsync模塊文件
在這里定義源端redis和目標redis相關(guān)信息即可
[sync_reader] address = "源Redis地址:端口" # 例如:192.168.1.1:6379 [redis_writer] address = "目標Redis地址:端口" # 例如:r-bp1xxxxx.redis.rds.aliyuncs.com:6379 [advanced] parallel = 32 # 并發(fā)線程數(shù),根據(jù)服務(wù)器性能調(diào)整 [filter] # 可選:跳過以"temp:"或"cache:"開頭的Key block_key_prefix = ["temp:", "cache:"]
2.3 配置systemd
配置redis-shake服務(wù),將其托管至systemd
#vim /etc/systemd/system/redis-shake.service [Unit] Description=RedisShake Data Sync Service After=network.target [Service] Type=simple User=root Group=root WorkingDirectory=/root/redis-shake ExecStart=/root/redis-shake/redis-shake /root/redis-shake/sync.toml Restart=always RestartSec=10 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target
2.4 啟動并設(shè)置為自啟
啟動后,Redis-Shake會先在屏幕上打印全量同步的進度日志。當(dāng)你看到 sync rdb done 的提示時,就意味著它已經(jīng)進入了增量同步階段,會持續(xù)將源實例的變更實時同步到目標實例
#systemctl daemon-reload # systemctl enable --now redis-shake Created symlink from /etc/systemd/system/multi-user.target.wants/redis-shake.service to /etc/systemd/system/redis-shake.service.

三、驗證
測試我們可以在源端redis創(chuàng)建測試鍵值對。如下
127.0.0.1:6379> SELECT 1 OK 127.0.0.1:6379[1]> SET test_bxy "test_value1" OK

在目標端redis驗證 鍵值對是否同步過來。
redis-cli -h 192.168.x.x -p 9736 -a 123456 -n 1 GET test_bxy
由此可見,目標端鍵值對數(shù)據(jù)已同步過來了。

到此這篇關(guān)于基于Redis-Shake實現(xiàn)Redis實時同步的示例代碼的文章就介紹到這了,更多相關(guān)Redis-Shake Redis實時同步內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于redis Key淘汰策略的實現(xiàn)方法
下面小編就為大家?guī)硪黄P(guān)于redis Key淘汰策略的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-03-03
基于Redis實現(xiàn)分布式單號及分布式ID(自定義規(guī)則生成)
一些業(yè)務(wù)背景下,業(yè)務(wù)要求單號需要有區(qū)分不同的前綴,那么在分布式的架構(gòu)下如何自定義單號而且還能保證唯一呢?本文就來詳細的介紹一下2021-09-09
Redis Cluster集群動態(tài)擴容的實現(xiàn)
本文主要介紹了Redis Cluster集群動態(tài)擴容的實現(xiàn),文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07

