首先:
1、创建表:
MySQL数据表结构:
CREATE TABLE events_all_time (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
action varchar(255) NOT NULL,
count int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
2、 Redis存储结构:
HSET events_all_time [action] [count]
HSET events_all_time [action] [count]
下面是重点,能过下面SQL语句将MySQL输出直接变更成redis-cli可接收的格式:
SELECT CONCAT(
"*4\r\n",
'$', LENGTH(redis_cmd), '\r\n',
redis_cmd, '\r\n',
'$', LENGTH(redis_key), '\r\n',
redis_key, '\r\n',
'$', LENGTH(hkey), '\r\n',
hkey, '\r\n',
'$', LENGTH(hval), '\r\n',
hval, '\r'
)
FROM (
SELECT
'HSET' as redis_cmd,
'events_all_time' AS redis_key,
action AS hkey,
count AS hval
FROM events_all_time
) AS t
格式说明如下:
*4 #表示有4个参数
$4 #表示“参数”有三个字节("HSET"字符串为4个字节)
hset #执行的命令
$8 # key有 8个字节
wolys101 #key对应的值
$6 #field对应的长度
passwd #field对应的值
$12 # value的长度
wolysopen111 #value的值
# 一条语句结束
每行默认以 \r\n 结尾
$4 #表示“参数”有三个字节("HSET"字符串为4个字节)
hset #执行的命令
$8 # key有 8个字节
wolys101 #key对应的值
$6 #field对应的长度
passwd #field对应的值
$12 # value的长度
wolysopen111 #value的值
# 一条语句结束
每行默认以 \r\n 结尾
同时在执行玩一行后,以 \r\n 代码一条语句结束
3、
然后用管道符重定向输出即可:
cat 2.txt | redis-cli --pipe
注意:第三部可能遇到问题,如果提示redis-cli不是命令。window 下需要配置redis环境变量
参考连接:
将MySQL数据迁移到Redis:
http://www.ttlsa.com/database/mysql_data_will_be_migrated_to_redis/
redis pipe大数据量导入:
http://hjy2099.iteye.com/blog/2224770
使用reids-cli --pipe导入redis protocol文件数据:
http://f.dataguru.cn/thread-197777-1-1.html
redis 教程:
https://redis.io/topics/mass-insert