redis-cli 经过管道 --pipe 快速导入数据到redis中

最近有个需求,须要把五千万条数据批量写入redis中,方法却是有不少种!效率最高的就是经过redis-cl管道的方式写入html

一:先看看命令web

cat redis.txt | redis-cli -h 127.0.0.1 -a password - p 6379 --pipe

结构很简单 redis.txt 是你的文件名称 后面是你的客户端redis

二:redis.txt 的 文件格式ubuntu

2.1 redis.txt的格式一vim

有两种文件格式 都是能够的app

eg:  set yutes testsssionic

*3
$3
set
$5
yutes
$7
testsss

*3
$3
set
$3
ymy
$9
testvalue

解释:spa

eg:.net

*3 表示有三个字符  3d

$3 表示 set字符长度为3 也就是咱们的命令

$5表示 yutes的长度为5 也就是咱们的key

$7表示 testsss的长度为7 也就是咱们的value

不一样的字符直接 须要用换行隔开 例如紧接着下一个是  set ymy testvalue

另一种方式 就比较简单直观

2.2 redis.txt的格式二

set yutes testsss
set ymy testvalue

把须要的本身这样写就行

三:文件格式转码

unix2dos  redis.txt 

 上面的命令会去掉行尾的^M符号

四:执行命令就能够了 如图

 

四:总结

导入3250万数据大概用了 1分30秒左右

而这种方式 用了30多分钟!

 

 

遇到的坑

1: 没有 unix2dos 命令

apt install  unix2dos  没有成功 提示 找不到 unix2dos pkg

更新 apt ,sudo apt update  ,可是仍然找不到  unix2dos 

添加 apt的源

vim /etc/apt/sources.list  

能够参考连接 http://www.javashuo.com/article/p-cebtxnpl-ee.html

个人list为:

deb http://archive.ubuntu.com/ubuntu bionic main
           deb http://archive.ubuntu.com/ubuntu bionic-security main
           deb http://archive.ubuntu.com/ubuntu bionic-updates main
           deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse

而后在从新sudo apt update 在  apt install unix2dos 或者 sudo apt-get install tofrodos 

2: 上面的文件格式转码是

是 unix2dos filename 而不是 dos2unix filename

3: 集群模式下 如何写入

若是不经过 pipe 咱们能够经过 redis-cli -c 来启动redis集群模式 

cat redis.txt | redis-cli -c -h 127.0.0.1 -a password - p 6379

可是经过 --pipe 来启动集群模式的话 会 提示 MOVEN *** 172.20.**** 错误

那么解决方案有两种

一:暴力型的

你在集群模式下 --pipe 你会发现 key值的redis槽点在 此节点上 就写入成功了 不在此节点 就没有写入成功

那咱们能够把每一个节点跑 --pipe 一次,那么每一个节点 就会写入本身的数据

二:细致型

经过key 的哈希值 区分槽点,经过节点拿到槽点,,嗯嗯  有点麻烦!详细看连接

能够参考连接:https://blog.csdn.net/kevin_pso/article/details/53945053

参考文档:https://blog.csdn.net/u014078154/article/details/79316430

相关文章
相关标签/搜索