mysql数据向Redis快速导入
Redis协议
*<args><cr><lf> 参数个数
$<len><cr><lf> 第一个参数长度
<arg0><cr><lf> 第一个参数
$<len><cr><lf> 第一个参数长度
<arg1><cr><lf> 第二个参数
... ...
编写SQL语句,把mysql数据组合成Redis协议数据流
SELECT CONCAT(
"*16\r\n",
'$', LENGTH(redis_cmd), '\r\n',redis_cmd, '\r\n','$', LENGTH(redis_key), '\r\n',redis_key, '\r\n',
'$', LENGTH(hkey1), '\r\n',hkey1, '\r\n','$', LENGTH(hval1), '\r\n', hval1, '\r\n'
'$', LENGTH(hkey2), '\r\n',hkey2, '\r\n','$', LENGTH(hval2), '\r\n', hval2, '\r\n'
'$', LENGTH(hkey3), '\r\n',hkey3, '\r\n','$', LENGTH(hval3), '\r\n', hval3, '\r\n'
'$', LENGTH(hkey4), '\r\n',hkey4, '\r\n','$', LENGTH(hval4), '\r\n', hval4, '\r\n'
'$', LENGTH(hkey5), '\r\n',hkey5, '\r\n','$', LENGTH(hval5), '\r\n', hval5, '\r\n'
'$', LENGTH(hkey6), '\r\n',hkey6, '\r\n','$', LENGTH(hval6), '\r\n', hval6, '\r\n'
'$', LENGTH(hkey7), '\r\n',hkey7, '\r\n','$', LENGTH(hval7), '\r\n', hval7, '\r'
)
FROM (
SELECT
'HMSET' AS redis_cmd, CONCAT(resource_id,'_hash') AS redis_key,
'name' AS hkey1,resource_title AS hval1,
'type' AS hkey2,resource_type_name AS hval2,
'exe' AS hkey3,resource_format AS hval3,
'page' AS hkey4,resource_page AS hval4,
'size' AS hkey5,resource_size AS hval5,
'time' AS hkey6,create_time AS hval6,
'num' AS hkey7,resource_downcount AS hval7
FROM t_resource_info
) AS t
拼出来的串
*\r\n$\r\nHMSET\r\n$\r\nNBA231058\r\n$\r\nname\r\n$\r\n绿色食品的定义及绿色食品标志的使用\r\n$\r\ntype\r\n$\r\n文本\r\n$\r\nexe\r\n$\r\ndoc\r\n$\r\npage\r\n$\r\n1\r\n$\r\nsize\r\n$\r\n79.5KB\r\n$\r\ntime\r\n$\r\n2013-- ::\r\n$\r\nnum\r\n$\r\n18\r\n
执行下面的语句
mysql -h 10.10.3.218 -uroot -p123456 -Dtest_db --skip-column-names --raw </usr/local/redis.sql |redis-cli --pipe
–raw: 使mysql不转换字段值中的换行符。
–skip-column-names: 使mysql输出的每行中不包含列名。
单独执行
echo -en '*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n' | redis-cli --pipe
经测试200W条数据,2分钟以内就可以完成。
mysql数据向Redis快速导入的更多相关文章
- 快速同步mysql数据到redis中
MYSQL快速同步数据到Redis 举例场景:存储游戏玩家的任务数据,游戏服务器启动时将mysql中玩家的数据同步到redis中. 从MySQL中将数据导入到Redis的Hash结构中.当然,最直接的 ...
- 导出 mysql 数据到 redis
决定你要导入到 redis 的数据类型 假设我的表 t_user 的结构为 列名 注释 类型 name 名称 varchar idcard 身份证号 varchar phone 手机号 varchar ...
- mysql数据与Hadoop之间导入导出之Sqoop实例
前面介绍了sqoop1.4.6的 如何将mysql数据导入Hadoop之Sqoop安装,下面就介绍两者间的数据互通的简单使用命令. 显示mysql数据库的信息,一般sqoop安装测试用 sqoop l ...
- python生成数据后,快速导入数据库
1.使用python生成数据库文件内容 # coding=utf-8import randomimport time def create_user(): start = time.time() ...
- 转载:mysql数据同步redis
from: http://www.cnblogs.com/zhxilin/archive/2016/09/30/5923671.html 在服务端开发过程中,一般会使用MySQL等关系型数据库作为最终 ...
- 利用gearman同步mysql数据到redis
一.Gearman 1.Gearman是一个分发任务的程序框架. 2.体系:a.client:发送一个jobb.server:找到合适的worker,把job交给该workerc.worker:处理j ...
- 非默认安装目录下mysql数据的导出与导入
系统:Centos 6.5 1.首先确定msyql是否安装以及安装目录: [root@localhost ~]# service mysqld status mysqld (pid ) 正在运行... ...
- linux下mysql数据的导出和导入
导出整个数据库中的全部数据 1.在linux命令行下输入: mysqldump -u userName -p dabaseName > fileName.sql fileName.sql最好加上 ...
- MySQL数据的导出和导入
MySQL环境变量设置,将%MySQL_HOME%下的MySQL Server 5.1/bin放到Path下. MySQL的mysqldump工具,基本用法是: shell> mysqldu ...
随机推荐
- Java 内存区域和GC机制
目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...
- Visual Studio 推荐插件--高量,变量高量,语法高亮
1 WordLight for 2008 下载网址:http://visualstudiogallery.msdn.microsoft.com/ad686131-47d4-4c13-ada2-5b1 ...
- linux清除当前屏幕
linux清除当前屏幕:直接clear命令即可 而在windows下的话用cls命令
- Delphi按下F1不能出现帮助文档的解决方法
不光是Delphi,Windows里面所有的之所以无法打开.hlp帮助文档的问题都可以使用以下的方法来解决 问题:情况是这样的,不是打不开hlp帮助文档,按F1出现的是Windows的帮助.而Delp ...
- 突破python缺陷,实现几种自定义线程池 以及进程、线程、协程的介绍
Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. #!/usr/bin/env python # -*- coding:utf-8 -*- import t ...
- 图结构练习——判断给定图是否存在合法拓扑序列(dfs算法(第一个代码),邻接矩阵(前两个代码),邻接表(第三个代码))
sdut 2140 图结构练习——判断给定图是否存在合法拓扑序列 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 给定一个有向图 ...
- ytu 1058: 三角形面积(带参的宏 练习)
1058: 三角形面积 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 190 Solved: 128[Submit][Status][Web Boar ...
- HDU5792 World is Exploding(树状数组)
一共6种情况,a < b且Aa < Ab, c < d 且Ac > Ad,这两种情况数量相乘,再减去a = c, a = d, b = c, b = d这四种情况,使用树状数组 ...
- Web分布式架构演变过程
1 单台服务器 2 应用服务器与数据库服务器 文件服务器分开 3 数据库 缓存 读写分离 实时写 非实时写 4 应用服务器集群 需要再配一台”负载均衡调度器“,nginx 5 数据库拆封 主库 ...
- Vector[C++]
// vector<int> vec; // for(int i = 0; i < 10; i++) // { // vec.push_back(5) ...