远行的心 发表于 2018-11-2 13:17:30

redis-dump数据导出以及redis-load还原数据

一 、安装Ruby依赖
  1)安装Ruby环境
  yum -y install ruby ruby-devel
  yum -y install rubygems
  2)添加taobao Ruby镜像
  添加淘宝ruby源;
  

gem sources --add http://gems.ruby-china.org --removehttps://rubygems.org/  
http://gems.ruby-china.org added to sources
  
source https://rubygems.org/ not present in cache
  

  查看现有ruby源;
  

#gem sources --l  
*** CURRENT SOURCES ***
  
http://rubygems.org/
  
http://gems.ruby-china.org
  

二、安装redis-dump
  Centos默认支持ruby到2.0.0,可gem 安装redis需要最低是2.2.2
  解决办法是 先安装rvm,再把ruby版本提升至2.3.3
  #gem install redis-dump
  

select>
ERROR:Error installing redis-dump:  redis requires Ruby version >= 2.2.2.
  

  #gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
  

gpg: directory `/root/.gnupg' created  
gpg: new configuration file `/root/.gnupg/gpg.conf' created
  
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
  
gpg: keyring `/root/.gnupg/secring.gpg' created
  
gpg: keyring `/root/.gnupg/pubring.gpg' created
  
gpg: requesting key D39DC0E3 from hkp server keys.gnupg.net
  
gpg: /root/.gnupg/trustdb.gpg: trustdb created
  
gpg: key D39DC0E3: public key "Michal Papis (RVM signing) " imported
  
gpg: no ultimately trusted keys found
  
gpg: Total number processed: 1
  
gpg:               imported: 1(RSA: 1)
  

  1.安装curl
  #sudo yum install curl


[*]  安装RVM
  #curl -L get.rvm.io | bash -s stable

[*]  source/usr/local/rvm/scripts/rvm

[*]  查看rvm库中已知的ruby版本
  

#rvm list known  
#MRI Rubies
  
2.0.0[-p648]
  
2.1[.10]
  
2.2[.7]
  
2.3[.4]
  
2.4[.1]
  


[*]  安装一个ruby版本
  #rvm install 2.3.4   这里要选择正确   //rvm install 2.3会失败

[*]使用一个ruby版本  #rvmuse2.3.4

  

#rvm --create ruby-2.3.4  
Using /usr/local/rvm/gems/ruby-2.3.4
  

#ruby --version  
ruby 2.3.4p301 (2017-03-30 revision 58214)
  


[*]卸载一个已知版本rvmremove2.0.0
  安装redis-dump
  #gem install redis-dump

三、redis简单初步优化以及启动
  配置文件参数:
  

# grep -Ev "^#|^$" /usr/local/redis/redis.conf |egrep "bind|port|tcp-backlog|daemonize|pidfile|loglevel|logfile|dir|requirepass|appendonly|appendfsync"  
bind 127.0.0.1
  
port 6379
  
tcp-backlog 511
  
daemonize yes
  
pidfile /var/run/redis_6379.pid
  
loglevel notice
  
logfile "/data/redis/log/redis.log"
  
dir /data/redis/data/
  
requirepass zykjdr#558996
  
appendonly no
  
appendfilename "appendonly.aof"
  

  启动:redis-server /usr/local/redis/redis.conf
  

# redis-cli -h 127.0.0.1 -p 6379 -a 'zykjdr#558996'  
127.0.0.1:6379> get key
  
(nil)
  
127.0.0.1:6379> set key01 name01
  
OK
  
127.0.0.1:6379> set key02 name02
  
OK
  
127.0.0.1:6379>
  

四、导出redis数据
  #redis-dump -u 127.0.0.1:6379 -a 'zykjdr#558996' > test.json
  

# redis-dump -u 127.0.0.1:6379 -a 'zykjdr#558996' > test.json  
-bash: redis-dump: command not found
  

  原因是没有指定ruby-2.3.4的环境,导致找不到redis-dump命令
  解决办法:
  

# rvm --create ruby-2.3.4  
Warning! PATH is not properly set up, '/usr/local/rvm/gems/ruby-2.3.4/bin' is not available.
  Usually this is caused by shell initialization files. Search for 'PATH=...' entries.
  You can also re-add RVM to your profile by running: 'rvm get stable --auto-dotfiles'.
  To fix it temporarily in this shell session run: 'rvm use ruby-2.3.4'.
  To ignore this error add rvm_silence_path_mismatch_check_flag=1 to your ~/.rvmrc file.
  
Using /usr/local/rvm/gems/ruby-2.3.4
  
# which redis-dump
  
/usr/local/rvm/gems/ruby-2.3.4/bin/redis-dump
  

  数据导出
  # redis-dump -u 127.0.0.1:6379 -a 'zykjdr#558996' > test.json
  

# cat test.json  
{"db":0,"key":"key02","ttl":-1,"type":"string","value":"name02","size":6}
  
{"db":0,"key":"key01","ttl":-1,"type":"string","value":"name01","size":6}
  
#
  

  在redis-server 中删除数据
  

127.0.0.1:6379> del key02  
(integer) 1
  
127.0.0.1:6379> get key02
  
(nil)
  
127.0.0.1:6379> del key01
  
(integer) 1
  
127.0.0.1:6379> get key01
  
(nil)
  

  redis-load 还原数据
  

# < test.json redis-load -u 127.0.0.1:6379 -a 'zykjdr#558996'  
# redis-cli -h 127.0.0.1 -p 6379 -a 'zykjdr#558996'
  
127.0.0.1:6379> get key01
  
"name01"
  
127.0.0.1:6379> get key02
  
"name02"
  
127.0.0.1:6379>
  

  同时可以设置环境变量来使用redis-dump 和redis-load导出和导入redis数据
  在redis.conf配置文件中去掉redis-server的密码,
  设定一个环境变量
  

# export REDIS_URI=127.0.0.1:6379  
# redis-dump >test1.json
  
# cat test1.json
  
{"db":0,"key":"key01","ttl":-1,"type":"string","value":"name01","size":6}
  
{"db":0,"key":"key02","ttl":-1,"type":"string","value":"name02","size":6}
  

  登录redis-server删除key值
  

# redis-cli -h 127.0.0.1 -p 6379 -a 'zykjdr#558996'  
127.0.0.1:6379> del key01
  
(integer) 1
  
127.0.0.1:6379> del key02
  
(integer) 1
  

  导入数据并查看导入的key值``
  

#get key01
  
"name01"
  
127.0.0.1:6379>
  

#
页: [1]
查看完整版本: redis-dump数据导出以及redis-load还原数据