从一个大的表格从MySQL到Redis,你会
发现,当你提取,
转换,或负载的一行数据,
速度慢的让你无法忍受。在这里我要告诉一个小技巧,让你自由。MySQL
命令行的输出直接通过Redis命令通过管道输出绕过中间件的方式,使他们能够达到最佳的速度进行数据
操作时。
一个关于八百万线数据的MySQL表,这是最初导入redis,花了90分钟,它只需要两分钟使用这种
方法,相信它或没有,我相信它。
从MySQL到Redis数据协议
使用命令行的工人有一个批量插入
模式专为批
处理执行的命令。第一步是格式的MySQL
查询内容为数据格式提供给我们redis-cli.here!
我的统计表:
创建表(events_all_time
ID int(11)符号的非空auto_increment,
varchar(255)不为空的动作,
int(11)不是NULL
默认值0,
主键(ID),
独特的关键uniq_action(行动)
);
这是在每一行数据准备的Redis命令如下:
HSET events_all_time {action} {数量}
按照以上Redis命令的规则,创建一个events_to_redis.sql
文件,它是用来产生redis数据协议格式的SQL:
- events_to_redis.sql
选择concat(
* 4 r
'$',长度(redis_cmd), R',
redis_cmd,' R',
'$',长度(redis_key), R',
redis_key,' R',
'$',长度(HKEY), R',
HKEY,' R',
'$',长度(HVAL), R',
HVAL、 R
)
(从
选择
hset'as redis_cmd,
events_all_time'as redis_key,
行动HKEY,
算是HVAL
从events_all_time
T)
好,用下面的命令执行:
MySQL stats_db --跳过列名称——原events_to_redis.sql redis CLI——管|。
重要的MySQL
参数是:
-原始的:使MySQL不在字段值中转换行的行。
-跳过列名:在MySQL输出的每一行中不包含列名。