最近有个需求,须要把五千万条数据批量写入redis中,方法却是有不少种!效率最高的就是经过redis-cl管道的方式写入html
一:先看看命令web
结构很简单 redis.txt 是你的文件名称 后面是你的客户端redis
二:redis.txt 的 文件格式ubuntu
2.1 redis.txt的格式一vim
有两种文件格式 都是能够的app
eg: set yutes testsssionic
解释:spa
eg:.net
*3 表示有三个字符 3d
$3 表示 set字符长度为3 也就是咱们的命令
$5表示 yutes的长度为5 也就是咱们的key
$7表示 testsss的长度为7 也就是咱们的value
不一样的字符直接 须要用换行隔开 例如紧接着下一个是 set ymy testvalue
另一种方式 就比较简单直观
2.2 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集群模式
可是经过 --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