Redis:使用redis-dump导出、导入、还原数据实例

本文详细介绍了如何在Linux系统上安装必要的环境,如Ruby和RubyGems,然后使用redis-dump工具对Redis数据库进行备份和恢复操作,包括导出和导入数据,以及处理可能出现的编码和版本兼容性问题。
摘要由CSDN通过智能技术生成

redis的备份和还原,借助了第三方的工具,redis-dump

1、安装必要环境

yum -y install zlib-devel openssl-devel

2、安装redis-dump
安装ruby:

ruby下载地址:https://www.ruby-lang.org/zh_cn/downloads/

我下载的是 2.5.0 版本

wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz

ruby安装教程:

安装编译环境

yum install gcc-c++

先查看ruby安装过的版本

ruby -v

先卸载之前的版本(破后而立):

yum remove ruby

解压ruby:

tar -xvf ruby-2.5.0.tar.gz

创建要安装ruby的目录:

mkdir -p /usr/local/ruby

进入刚刚解压的目录里面:

cd ruby-2.5.0

配置并指定要安装ruby的目录:

./configure --prefix=/usr/local/ruby

编译:

make

安装:

make install

建立快捷方式:

ln -s /usr/local/ruby/bin/ruby /usr/local/bin/ruby

查看ruby是否安装成功:

ruby -v
显示: 
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

手动安装rubygems

有两种安装方式:
1.yum方式安装
2.源码方式安装

源码安装rubygems:

下载 rubygems-x.x.x.zip 包,下载地址:Download RubyGems | RubyGems.org | your community gem host 点击下载ZIP

wget https://rubygems.org/rubygems/rubygems-3.5.6.zip

解压:

unzip rubygems-3.1.2.zip

安装:

cd  rubygems-3.1.2

ruby setup.rb

YUM安装rubygems:

安装依赖环境:

yum -y install zlib-devel openssl-devel

安装rubygems

yum install rubygems -y

解压,进入 rubygems 解压目录 bin 目录下安装 redis-dump

./gem install redis-dump -V

如果报错提示 ruby版本过低,则先安装以下内容

./gem install uri-redis -v 0.4.2
./gem install yajl-ruby -v 1.4.1

设置软连

ln -s /usr/local/ruby/bin/redis-dump /usr/local/bin/redis-dump
ln -s /usr/local/ruby/bin/redis-load /usr/local/bin/redis-load

3使用:

导出:

redis-dump -u 127.0.0.1:6379 > data.json

# 导出指定数据库中的数据,比如说 0 号数据库
redis-dump -u 127.0.0.1:6379 -d 0 > data8.json

# 如果 redis 设置了有密码
redis-dump -u {host} -a {password} > data.json
redis-dump -u :{password}@127.0.0.1:6379 > data.json

# 如果需要导出的 redis 是一个 URL 连接地址时,貌似可以这样(没有实操过,具体不清楚)
redis-dump -u :{password}@{domain}:{port}
# eg: redis-dump -u :123456@www.alex.com:9055

恢复:

# 导入命令
cat data.json | redis-load
# 或者
< data.json redis-load

# 导入数据到 8 号数据库
cat data8.json | redis-load -u 127.0.0.1:6379 -a 123456 -d 0
# 或者
< data8.json redis-load -u 127.0.0.1:6379 -a 123456 -d 0
# 如果以上命令是因为 utf-8 格式报错时,可以加上 `-n` 参数
cat data8.json | redis-load -n -u 127.0.0.1:6379 -a 123456 -d 0
# 这里需要注意如果你导出的DB与导入的DB不一致,则会导入失败

如果想导入到别的db库里面可以使用sed进行替换库号:

sed 's/"db":0/"db":1/g' 40-6401-redis-db-0.json > output-40-6401-redis-db-1.json

补充:
问题一:

解决 podinstall 出现 incompatible character encodings: UTF-8 and ASCII-8BIT 的问题

问题分析:

1、查看podfile文件是否存在不合法的字符,检查格式。
2、可能是 Ruby的版本号,与当前Cocoapods不适配使用。

版本号不适配处理方案:
1、卸载当前的ruby,重新安装ruby

查看当前ruby版本号
ruby -v

结果如下:
ruby 2.6.8p205 (2021-07-07 revision 67951) [x86_64-darwin21]

不建议使用最新的版本,可能存在问题,最好使用比较稳定的版本,2.6 或2.7 的版本

问题二:
导入过程中提示如下错误

edis/dump.rb:236:in block in set_value_set’)Redis#sadd will always return an Integer in Redis 5.0.0. Use Redis#sadd? instead.(called fron: /usr/local/ruby/lib/ruby/gems/2.7.0/gems/redis-dump-0.4.0/lib/r edis/dump.rb:236:in `block in set_value_set’)

AI的回答:


这个警告是由于在 Ruby Gem 的 redis-dump 中的代码中使用了 Redis#sadd 方法,而在 Redis 5.0.0 中,Redis#sadd 方法会始终返回一个整数值而不是 OK。

为了解决这个问题,建议你更新 redis-dump 的版本,或者修改 redis-dump 的代码,将 Redis#sadd 方法替换为 Redis#sadd? 方法。 Redis#sadd? 方法在 Redis 5.0.0 中会返回 true,表示添加成功,否则返回 false。

如果你能访问 redis-dump 的源代码,可以在 redis/dump.rb 文件的 236 行处找到该代码,将其中的 sadd 替换为 sadd?

You: 这个信息是指报错了吗?


不完全是。这个警告信息告诉你,在Redis 5.0.0版本中,Redis#sadd方法的行为已经改变了,它现在总是返回一个整数,而不是以前的OK。因此,在使用Redis#sadd方法时,可能会导致代码在运行时出现意外行为,因为它不再返回预期的值。

警告建议你更新你的代码,使用新的Redis#sadd?方法来替换Redis#sadd,以确保在Redis 5.0.0版本下仍然能够正常工作,并避免因此而引起的问题。
/usr/local/ruby/lib/ruby/gems/2.7.0/gems/redis-dump-0.4.0/lib/redis/dump.rb

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值