如何高效地向Redis插入大量的数据

如何高效地向Redis插入大量的数据,第1张

通过导入文件的方式插入,文件可以用其他方式先生成,比如使用java,来生成data1.txt,然后使用下面的sql语句:

load data local infile 'd:/data1.txt' replace into table hk_acinfo lines terminated by '\\r\\n'

使用这个方法,我插入过1千万以上的数据,如果没有网络影响的话,每秒1M+/s的速度写入,很快的

1、导出redis

[plain] view plain copy

#!/bin/bash

REDIS_HOST=localhost

REDIS_PORT=6379

REDIS_DB=1

KEYNAME=redis:hash:*

KEYFILE=key.txt

echo "KEYS $KEYNAME" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB > $KEYFILE

OUTFILE=valuelist.txt

TEMPFILE=$OUTFILE.tmp

echo > $TEMPFILE

for key in `cat $KEYFILE`

do

echo $key

#echo "HGETALL $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILE

echo "GET $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILE

done

2、整理导出的结果

[plain] view plain copy

cat $TEMPFILE|xargs -n 2|awk -F" " -v KEYNAME=$KEYNAME '{print "HSET "KEYNAME " " $1, "\""$2"\""}' > $OUTFILE

其中的xargs -n 2是把2行合成一行,换行符用空格代替

然后用awk按空格分开,$1是keynam $2是key的值

再次转换成HSET的格式,其中用到KEYNAME变量,这个要用-v预先定义。

最后转化为 HSET KEYNAME KEY "VALUE"格式。

3、导入转换的结果

[plain] view plain copy

cat $OUTFILE | redis-cli -h localhost -p 6379

二、直接用Redis的Dump和Restore导出和导入

[plain] view plain copy

redis-cli --raw dump test | head -c-1 | redis-cli -x restore test1 0


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11700527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存