redis-cli 通过管道 --pipe 快速导入数据到redis中
最近有个需求,需要把五千万条数据批量写入redis中,方法倒是有很多种!效率最高的就是通过redis-cl管道的方式写入
一:先看看命令
cat redis.txt | redis-cli -h 127.0.0.1 -a password - p 6379 --pipe
结构很简单 redis.txt 是你的文件名称 后面是你的客户端
二:redis.txt 的 文件格式
2.1 redis.txt的格式一
有两种文件格式 都是可以的
eg: set yutes testsss
*3
$3
set
$5
yutes
$7
testsss
*3
$3
set
$3
ymy
$9
testvalue
解释:
eg:
*3 表示有三个字符
$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
可以参考链接 https://www.cnblogs.com/webnote/p/5767853.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
redis-cli 通过管道 --pipe 快速导入数据到redis中的更多相关文章
- 1118ALTER TABLE tabname DISCARD TABLESPACE快速导入数据利用表空间
-- 快速导入数据如果你有.ibd文件的一个干净的备份,你可以按如下操作从被起源的地方恢复它到MySQL安装中:相当快速 1. 发出这个ALTER TABLE语句: 2. ALTER TABLE tb ...
- mysql导入数据到oracle中
mysql导入数据到oracle中. 建立Oracle表: CREATE TABLE "GG_USER" ( "USERID" BYTE) NOT NULL, ...
- Oracle快速导入数据工具
sqlldr是oracle自带的快速导入批量数据的工具,常用于性能测试.考虑手工构造控制文件较为繁琐,因此使用脚本完成批量数据的自动导入. 基本知识 sqlldr命令语法 sqlldr dbname/ ...
- MySQL 之 LOAD DATA INFILE 快速导入数据
SELECT INTO OUTFILE > help select; Name: 'SELECT' Description: Syntax: SELECT [ALL | DISTINCT | D ...
- Redis——redis使用redis-dump,redis-load导出导入数据——【三】
来源 https://www.cnblogs.com/dadonggg/p/8662455.html https://blog.csdn.net/chenxinchongcn/article/deta ...
- SqlLite用SQLiteTransaction快速导入数据
mysql与sql server都有整表导入的类库,但是查遍了资料发现sqlLite没有,除非自己去写个,发现用SQLiteTransaction导入数据也很快,附上代码 /// <summar ...
- 实现excel导入导出功能,excel导入数据到页面中,页面数据导出生成excel文件
今天接到项目中的一个功能,要实现excel的导入,导出功能.这个看起来思路比较清楚,但是做起了就遇到了不少问题. 不过核心的问题,大家也不会遇到了.每个项目前台页面,以及数据填充方式都不一样,不过大多 ...
- sqoop导入数据到hive中元数据问题
简单配置了sqoop之后开始使用,之前用的时候很好用,也不记得有没有启动hivemetastore,今天用的时候没有启动,结果导入数据时,如果使用了db.tablename,就会出现找不到数据库的错, ...
- 使用sqoop1.4.4从oracle导入数据到hive中错误记录及解决方案
在使用命令导数据过程中,出现如下错误 sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.29.16:1521/testdb ...
随机推荐
- QuickBI助你成为分析师——计算字段功能
摘要: 在用户创建报表时,通过现有字段数据不能直接满足展示需求,需要进行一定建模操作.目前产品支持在数据集编辑界面进行初步建模,下面主要介绍新建字段功能,以达到展示需求. 在用户创建报表时,有时通过现 ...
- Vue2.0 --- vue-cli脚手架中全局引入JQ
第一步:安装jQuery npm/cmpn方式安装(默认安装1.7.X版本的JQ) npm/cnpm install jQuery 如果想安装更高版本的JQ那么可以选择在package.json文件下 ...
- 自学MongoDB(1)
MongoDB是nosql(非关系型数据库)中的一种,面向文档的数据库,介于传统的结构化数据库(关系型数据库)与非关系型数据库(文件储存)之间的一种,具有数据结构非常松散和非常灵活的特点;常用于存储分 ...
- C#多线程和线程池 【转】
1.概念 1.0 线程的和进程的关系以及优缺点 windows系统是一个多线程的操作系统.一个程序至少有一个进程,一个进程至少有一个线程.进程是线程的容器,一个C#客户端程序开始于一个单独的线程,C ...
- WDS和DHCP配置说明
网络启动程序 (NBP) 是网络启动过程中第一个下载和执行的文件,它可以控制启动开始时的体验(例如,用户是否必须按 F12 才能开始网络启动) WDS服务器配置说明: 1)如果WDS和DHCP安装在同 ...
- linux的常用命令介绍
1.ls 列出当前目录下的所有的文件和文件夹的名称. 参数如下:-a 显示隐藏文件 -l 显示方式为列表 -h 以可读性高的方式输出 eg: ls -lh /logs/tran 目录如果不指定(相 ...
- 任意N个不同数的逆序对平均值
在学习数据结构的时候看到了以下定理: 但是老师并没有解释,本着钻研的精神决定搞清楚为什么是这个数. 在百度 google一番之后并没有找到,决定自己试着证明. 最开始走了一些弯路,但突然灵光一闪很容易 ...
- 【spring源码分析】IOC容器初始化(九)
前言:上篇文章末尾提到createBeanInstance方法中使用工厂方法实例化Bean对象,本文将对该方法进行分析. AbstractAutowireCapableBeanFactory#inst ...
- shell编程企业级实战
如何才能学好Shell编程 为什么要学习shell编程 Shell是Linux底层核心 Linux运维工作常用工具 自动化运维必备基础课程 学好shell编程所需Linux基础 熟练使用vim编辑器 ...
- php 微信模板消息发送
<?php ini_set ( 'date.timezone', 'Asia/Shanghai' ); define ( 'IN_ASK2', TRUE ); $http_type = ((is ...