Mysql百万量级数据如何高效导入Redis,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
由上图,可以看到pipe命令的返回结果,txt文件中有多少行命令,返回的replies数就是多少, errors表示其中执行错误的命令条数。
协议的格式为:
*<参数数量> \r\n$<参数
1 的字节数量> \r\n<参数
1 的数据> \r\n...$<参数 N 的字节数量> \r\n<参数 N 的数据> \r\n
HSET id book1 book_description1
*4\r\n$4\r\nHSET\r\n$2\r\nid\r\n$5\r\nbook1\r\n$17\r\nbook_description1\r\n格式化一下:*4\r\n$4\r\nHSET\r\n$2\r\nidvvvv\r\n$5\r\nbook1\r\n$17\r\nbook_description1\r\n
DELIMITER $$USE `cb_mon`$$DROP PROCEDURE IF EXISTS `test_insert`$$CREATE DEFINER=`root`@`%` PROCEDURE `test_insert`()BEGIN DECLARE i INT DEFAULT
1; WHILE i<=
1000000 DO INSERT INTO
t_book(id,number,NAME,descrition) VALUES (i, CONCAT("00000",i) ,
CONCAT('book',i) ,
CONCAT('book_description',i)); SET i=i+1; END WHILE ; COMMIT; END$$DELIMITER ;调用存储过程
CALL test_insert();
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, id AS redis_key, NAME AS hkey, descrition AS hval FROM cb_mon.t_book ) AS t limit 1000000
并将内容保存至redis.sql 文件中。
编写shell脚本。由于我在主机上是通过docker安装的redis和mysql,以下脚本供参考:
#!/bin/bashstarttime=`date +'%Y-%m-%d %H:%M:%S'`docker exec -i
899fe01d4dbc mysql --default-character-set=utf8--skip-column-names --raw < ./redis.sql| docker exec -i
4c90ef506acd redis-cli --pipeendtime=`date +'%Y-%m-%d %H:%M:%S'`start_seconds=$(date --date="$starttime" +%s);end_seconds=$(date --date="$endtime" +%s);echo
"脚本执行耗时:"$((end_seconds-start_seconds))"s"
lost connection to mysql server during query
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:http://blog.itpub.net/31554680/viewspace-2684441/