整理一下經常使用的幾種redis遷移的方案,分別對應不一樣的場景。php
- 備份/拷貝/重啓
- redis-dump
- 客戶端
利用redis的持久化功能,redis重啓的時候,會自動從硬盤的持久化文件中讀取數據再恢復到內存中。利用這裏原理,把redis2的持久化備份
替換成redis1的,而後重啓redis2,它就會從硬盤持久化文件恢復到內存,這樣一來redis2就跟redis1同樣了
要使用這個方案,就必須瞭解redis的持久化,redis的持久化方案有2種,rdb模式和aof模式:git
rdb
覆蓋過去以後,新的redis數據就沒了,畢竟是覆蓋操做。而aof
由於是保存的命令,只是在新的redis上從新執行了一遍,因此不會覆蓋
新redis上的數據。 簡單來講若是須要保留新redis的數據,可使用aof
。github
rdb方案
# 連接redis $ redis-cli -u 127.0.0.1 -p 6379 -a 你的密碼 # 執行持久化 $ 127.0.0.1:6379> bgsave # 查看文件位置 $ 127.0.0.1:6379> config get dir
複製 redis數據目錄/dump.rdb
到另外一臺redis的數據目錄下,啓動便可。redis
ps:先關閉目標redis,先複製文件的話,在目標redis關閉的時候,會生成持久化文件,覆蓋你剛剛複製的文件
aof
# 設置appendonly yes $ 127.0.0.1:6379> config set appendonly yes # or $ redis-cli -u 127.0.0.1 -p 6379 -a 你的密碼 config set appendonly yes
執行以後,就會在 redis的數據目錄
看到 appendonly.aof
文件json
# 目標redis $ redis-cli -h aliyun_redis_instance_ip -p 6379 -a password --pipe < appendonly.aof
redis-dump是一個第三方的工具,提供redis的導出和導入。
安裝rvm。可參考官網:http://rvm.io/ruby
# gpg2 沒安裝的化自行安裝 `apt install gnupg2` $ gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB $ \curl -sSL https://get.rvm.io | bash -s stable # 按照系統提示執行,添加系統環境 $ source /etc/profile.d/rvm.sh # 確認安裝成功 $ rvm list known
安裝ruby 參考官方網站:http://www.ruby-lang.org/en/d...bash
# ruby版本參考官方發行的最新版,本搞寫的時候版本爲2.6.3 $ rvm install ruby 2.6.3
安裝 redis-dump
app
# 移除國外的庫,否則下載不了 $ gem sources --remove https://rubygems.org/ # 安裝國內的資源地址 $ gem sources -a https://gems.ruby-china.com/ # 安裝 $ gem install redis-dump -V
# 導出全部db $ redis-dump -u 127.0.0.1:6371 > db_full.json # 導出db15 $ redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json # 導入 $ < db_full.json redis-load -u 127.0.0.1:6379 $ < db_db15.json redis-load -u 127.0.0.1:6379 -d 15 # OR $ cat db_full | redis-load $ cat db_db15.json | redis-load -d 15 # 使用密碼的小技巧(注意密碼前面的`:`) $ redis-dump -u :密碼@127.0.0.1:6371
使用
phpredisadmin
等客戶端,自帶導入、導出
git庫 https://github.com/ErikDubbel...curl
Example: http://dubbelboer.com/phpRedi...工具
功能截圖: