mysql的数据导入到redis, 转载请注明.
前提:
已安装redis环境[下载],mysql环境[下载]
第一步:创建数据库
CREATE TABLE `mysql_to_redis` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`sex` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
第二步:插入数据
insert into `zhang`.`mysql_to_redis` ( `age`, `sex`, `name`) values ( '18', '男', 'zhangsan');
insert into `zhang`.`mysql_to_redis` ( `age`, `sex`, `name`) values ( '20', '女', 'wangwu');
第三步:创建执行批量脚本
SELECT CONCAT(
"*10\r\n",
'$',LENGTH(redis_cmd),'\r\n',redis_cmd,'\r\n',
'$',LENGTH(redis_key),'\r\n',redis_key,'\r\n',
'$',LENGTH(field_id),'\r\n',field_id,'\r\n',
'$',LENGTH(value_id),'\r\n',value_id,'\r\n',
'$',LENGTH(field_name),'\r\n',field_name,'\r\n',
'$',LENGTH(value_name),'\r\n',value_name,'\r\n',
'$',LENGTH(field_age),'\r\n',field_age,'\r\n',
'$',LENGTH(value_age),'\r\n',value_age,'\r\n',
'$',LENGTH(field_sex),'\r\n',field_sex,'\r\n',
'$',LENGTH(value_sex),'\r\n',value_sex,'\r'
) FROM (
SELECT 'hmset' AS redis_cmd,
CONCAT('mysql_to_redis:id:',id) AS redis_key,
'id' AS field_id,
id AS value_id,
'name' AS field_name,
name AS value_name,
'age' AS field_age,
age AS value_age,
'sex' AS field_sex,
sex AS value_sex
FROM mysql_to_redis
) AS t
参数说明:
--raw: 使mysql不转换字段值中的换行符。
--skip-column-names: 使mysql输出的每行中不包含列名。
第四步:执行命令
格式1:mysql -u superuser -psuperpass dbname --skip-column-names --raw < ~/employees.sql | redis-cli --pipe
格式2:mysql -u superuser -psuperpass -h 192.168.2.100 dbname --skip-column-names --raw < ~/employees.sql | redis-cli --pipe
本地执行命令如下: 【注意】数据库账号密码,指定数据库,并且当前路径执行redis-cli需要写全路径名称
mysql -uroot -p123456 zhang --skip-column-names --raw < ~/mysql_to_redis.sql | ./redis/src/redis-cli --pipe
进入redis查看
转载请注明,
参考文献:
https://georgechilumbu.wordpress.com/2016/12/11/export-data-from-mysql-to-redis/
https://www.oschina.net/translate/mysql-to-redis-in-one-step