批量把mysql批量转到redis

1,保证LINUX上安装了Mysql数据库,然后根据建表语句先建议表,并初始化好数据
2,然后将order.sql放到redis的安装目录下(与redis-server启动文件同目录),在--raw<order.sql的时候,会被找到
3,指令如下:

不用进去redis,但是在jedis目录下 
mysql -uroot -proot1234 test --default-character-set=utf8 --skip-column-names --raw < order.sql | ./redis-cli -h 192.168.99.101 -p 6379 -a 123456  --pipe

注意 : test是库名

详细步骤如下:

第1步:在mysql中创建表和导入数据.
CREATE TABLE `order` (
  `orderid` varchar(40) COLLATE utf8_bin DEFAULT NULL,
  `ordertime` varchar(60) COLLATE utf8_bin DEFAULT NULL,
  `ordermoney` varchar(40) COLLATE utf8_bin DEFAULT NULL,
  `orderstatus` varchar(40) COLLATE utf8_bin DEFAULT NULL,
  `version` varchar(40) COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin


INSERT INTO `order` VALUES('123456781','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456782','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456783','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456784','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456786','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456785','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456787','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456788','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456789','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456719','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456729','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456739','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456749','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456759','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456769','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456779','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456799','2019-01-01 14:04:05',24,0,0);
INSERT INTO `order` VALUES('123456789','2019-01-01 14:04:05',24,0,0);

 

第2步:把sql语句封装成redis认识的命令并保存成sql文件。并上传到redis目录 下。

SELECT CONCAT(
 '*10\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'
)
FROM (
 SELECT
 'HSET' AS redis_cmd,
 CONCAT('order:info:',orderid) AS redis_key,
 'ordertime' AS hkey1, ordertime AS hval1,
 'ordermoney' AS hkey2, ordermoney AS hval2,
 'orderstatus' AS hkey3, orderstatus AS hval3,
 'version' AS hkey4, `version` AS hval4
 FROM `order`
) AS t

解释:

'*10\r\n', 表示全部有10组数据 

$10 表示这字段有多少长度

 

批量把mysql批量转到redis

 

第3步:不用进去redis,但是在jedis目录下 

mysql -uroot -proot1234 test --default-character-set=utf8 --skip-column-names --raw < order.sql | ./redis-cli -h 192.168.99.101 -p 6379 -a 123456  --pipe

结果如下:

批量把mysql批量转到redis

 

提示:如果客户端链接不上时,记得禁用防火墙:

禁用防火墙

[[email protected] ~]# systemctl stop firewalld.service
[[email protected] ~]# systemctl disable firewalld.service
[[email protected] ~]# systemctl status firewalld.service