redis-dump是基於ruby開發,須要ruby環境,並且新版本的redis-dump要求2.2.2以上的ruby版本,centos中yum只能安裝2.0版本的ruby。須要先安裝ruby的管理工具rvm安裝高版本的rubyredis
可參考官網:http://rvm.io/
執行下列兩個命令安裝rvm;shell
# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB # curl -sSL https://get.rvm.io | bash -s stable # find / -name rvm -print /usr/local/rvm /usr/local/rvm/scripts/rvm /usr/local/rvm/bin/rvm /usr/local/rvm/src/rvm /usr/local/rvm/src/rvm/scripts/rvm /usr/local/rvm/src/rvm/bin/rvm /usr/local/rvm/src/rvm/lib/rvm /usr/local/rvm/lib/rvm #使rvm生效 source /usr/local/rvm/scripts/rvm
# 查看能夠安裝的Ruby版本 rvm list known # 當前最高的穩定版本是2.5.1 rvm install ruby 2.5.1 #查看ruby版本 ruby --version
# 移除gem自帶源,國內連不上 gem sources --remove https://rubygems.org/ # 添加國內淘寶源 gem sources -a https://ruby.taobao.org/ # 安裝redis-dump gem install redis-dump –V #查看redis-dump版本,安裝成功能夠開心的備份和還原redis了 redis-dump -v redis-dump v0.4.0
redis轉存儲jsonjson
redis-dump -u 127.0.0.1:6378 -a password > redis_6378.json
json還原rediscentos
< redis_6378.json redis-load -u 127.0.0.1 -a password
若是是redis集羣模式,須要對集羣各個實例分別導出導入,以下所示:ruby
命令(redis-dump -u :password@host:port -d 0 > fileName.json)無密碼可省略bash
redis-dump -u IP1:6379 -d 0 > 6379.json redis-dump -u IP2:6380 -d 0 > 6380.json redis-dump -u IP3:6381 -d 0 > 6381.json
執行完成命令以後,生成3個json文件,即爲集羣節點數據,爲提高導入效率,能夠將文件拷貝到目標集羣機進行導入,也能夠直接在本機導入。curl
命令(cat filename.json | redis-load -u :password@host:port -d 0)無密碼可省略工具
cat 6379.json | redis-load -u IP4:6379 -d 0 cat 6380.json | redis-load -u IP5:6379 -d 0 cat 6380.json | redis-load -u IP6:6380 -d 0
注意:導入時json文件源集羣節點和目的集羣節點鍵所在的槽要對應,若是json的槽不是由導入節點處理的,會報錯:提示MOVED 13596 host:porturl
執行redis-dump命令時若是報ERR unknown command 'keys'異常.net
緣由:keys命令用於全局查詢 通常不建議使用因此能在redis.conf中配置了禁用該命令 。
解決方案: 檢查redis.conf 中是否有該命令禁用配置
rename-command FLUSHALL "" 清空全部的庫數據 rename-command FLUSHDB "" 清空當前庫數據 rename-command KEYS "" 查詢全部庫數據 (由於數據量大時,執行此操做會消耗大量的資源 通常不建議使用該命令) 若是有註釋掉便可 !