Redis批量导入数据功能

Redis批量导入数据功能

​ 背景:需要在生产环境中导入excel 中10W+ 底量数据,这个时候生产包已经进入交付环境验证结束环节,现程序中支持这部分数据只走部分流程,因临时改变了正常注入的流程,不能写程序,只能通过脚本的方式将这些数据导入到redis中,因没有实战过redis,只会些简单的功能,了解了下redis的功能,发现有个pipe模式可以将所有的内容快速导入到redis中,因此上午花费了两个小时的时间在自己的服务器上搭建了个redis集群验证这个功能

1.官网下载 redis-5.0.8.tar.gz 包,上传至服务器,通过以下命令解压

tar -xzvf redis-5.0.8.tar.gz

2.将解压的目录拷贝到你要安装的最终目录里,我使用的目录为 /usr/local/software/rediscluster/redis/执行以下命令拷贝

cp -R redis-5.0.8/* /usr/local/software/rediscluster/redis/

3.开始编译安装

make install

4.在/usr/local/software/rediscluster/ 目录下建redis700{1-6}六个目录以及logs目录

mkdir redis7001 redis7002 redis7003 redis7004 redis7005 redis7006 logs

5.再创建startCluster.sh,createCluster.sh,shutdownCluster.sh三个文件备用,并授予执行权限

touch startCluster.sh
touch createCluster.sh
touch shutdownCluster.sh
chmod 777 startCluster.sh
chmod 777 createCluster.sh
chmod 777 shutdownCluster.sh

6.接下来拷贝redis.conf文件到 /usr/local/bin目录下,将/usr/local/bin目录下的东西都拷贝到之前创建的reids700{1-6}目录下,并将redis-cli拷贝备用

cp -R /usr/local/bin/* /usr/local/software/rediscluster/redis7001/
cp -R /usr/local/bin/* /usr/local/software/rediscluster/redis7002/
cp -R /usr/local/bin/* /usr/local/software/rediscluster/redis7003/
cp -R /usr/local/bin/* /usr/local/software/rediscluster/redis7004/
cp -R /usr/local/bin/* /usr/local/software/rediscluster/redis7005/
cp -R /usr/local/bin/* /usr/local/software/rediscluster/redis7006/
cp -R /usr/local/bin/redis-cli /usr/local/software/rediscluster/

7.然后修改redis700{1-6}目录下的redis.conf配置文件,修改完后改名为redis-{port}.conf

第1处: port 6379				    ————> 值 改成 7001
第2处: daemonize no 			    ————> 值 改成 yes
第3处: pidfile /var/run/redis_6379.pid  	    ————> 值 改成 /var/run/redis_7001.pid
第4处: logfile "" 				    ————> 值 改成 "../logs/redis_7001.log"
第5处: bind 127.0.0.1 			    ————> 值 改成 本机IP(可通过ifconfig查询)
第6处: protected-mode yes 			    ————> 值 改成 no
第7处: # cluster-enabled yes		    ————> 去掉注释
第8处: # cluster-config-file nodes-6379.conf  ————> 去掉注释 并把数字改成对应端口号,如这里是7001
第9处: # cluster-node-timeout 15000	  ————> 去掉注释
第10处:  appendonly no			    ————> 值 改成 yes

8.脚本的内容

startCluster.sh

cd /usr/local/software/rediscluster/redis7001
./redis-server ./redis-7001.conf
cd /usr/local/software/rediscluster/redis7002
./redis-server ./redis-7002.conf
cd /usr/local/software/rediscluster/redis7003
./redis-server ./redis-7003.conf
cd /usr/local/software/rediscluster/redis7004
./redis-server ./redis-7004.conf
cd /usr/local/software/rediscluster/redis7005
./redis-server ./redis-7005.conf
cd /usr/local/software/rediscluster/redis7006
./redis-server ./redis-7006.conf

createCluster.sh ip为配置文件里bind配的值

./redis-cli --cluster create {ip}:7001 {ip}:7002 {ip}:7003 {ip}:7004 {ip}:7005 {ip}:7006

shutdownCluster.sh

cd /usr/local/software/rediscluster/redis7001
./redis-cli -h 106.54.33.142 -p 7001 shutdown
cd /usr/local/software/rediscluster/redis7002
./redis-cli -h 106.54.33.142 -p 7002 shutdown
cd /usr/local/software/rediscluster/redis7003
./redis-cli -h 106.54.33.142 -p 7003 shutdown
cd /usr/local/software/rediscluster/redis7004
./redis-cli -h 106.54.33.142 -p 7004 shutdown
cd /usr/local/software/rediscluster/redis7005
./redis-cli -h 106.54.33.142 -p 7005 shutdown
cd /usr/local/software/rediscluster/redis7006
./redis-cli -h 106.54.33.142 -p 7006 shutdown

9.以上工作做完后开始安装一些基本软件

yum -y install gcc                    ## make install 命令需要此环境
yum -y intall ruby                    ## 安装ruby(此时安装的可能使低版本的)
curl -L get.rvm.io | bash -s stable   ## 安装rvm
source /usr/local/rvm/scripts/rvm     ## 使安装的rvm立即生效
rvm install 2.4.1	                  ## 通过rvm来安装ruby高级版本
gem install redis                     ## 通过ruby的工具包gem来安装redis接口
顺利到此,则运行ruby脚本的环境已具备

10.最后通过以下脚本启动

./startCluster.sh
ps -ef| grep redis

C:\Users\domgao\AppData\Roaming\Typora\typora-user-images\image-20200514104655711.png)]

./createCluster.sh
回车,等会儿然后输入yes即可

11.安装

yum install unix2dos

12.通过自己本地写个main方法读取excel中的信息,输入到redis.txt文件中,类似下面这种格式

set key1 value1
set key2 value2
...

然后将redis.txt上传到服务器,执行以下命令,将文件格式转化下

unix2dos redis.txt 

13.再执行以下命令将所有数据导入到redis中

cat redis.txt | redis-cli -c -h host -p port

至此终于以最快的速度完成任务了,本文部分内容参考网络,亲自验证,不足之处欢迎指正,后续有时间再好好了解了解redis,欢迎阅读,拜拜!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值