Mysql数据导入Redis

Mysql数据导入Redis

1.说明

通过管道传输pipe将MySQL数据批量导入Redis。

Redis客户端使用RESP(Redis的序列化协议)协议与Redis的服务器端进行通信。

在RESP协议中,有些的数据类型取决于第一个字节:

1、对于简单字符串,回复的第一个字节是“+”

2、对于错误,回复的第一个字节是“ - ”

3、对于整数,回复的第一个字节是“:”

4、对于批量字符串,回复的第一个字节是“$”

5、对于数组,回复的第一个字节是“*”

在RESP协议中,协议的不同部分始终以“\r\n”(CRLF)结尾。

2.脚本

  • 编写SQL语句,把Mysql数据组合成Redis协议数据流

–raw: 使mysql不转换字段值中的换行符。

–skip-column-names: 使mysql输出的每行中不包含列名。

redis-cli –pipe 表示使用redis pipe管道把数据导入到redis中

[root@host-192-168-1-1 redis-5.0.3]#  mysql -h 192.168.1.1 -uroot -p[password] -D[database] --skip-column-names --raw </root/import_single_redis.sql |src/redis-cli --pipe
  • 数组中加入HMSET命令,将store_id作为HMSET的key
SELECT * 
FROM
(
SELECT
	CONCAT(
		"*4\r\n",
		'$', LENGTH(redis_cmd), '\r\n',redis_cmd, '\r\n',
		'$', LENGTH(redis_key), '\r\n',redis_key, '\r\n',
		'$',LENGTH(key_term_id),'\r\n',key_term_id,'\r\n',
		'$',LENGTH(val_term_id),'\r\n',val_term_id,'\r\n'
	) AS Res
FROM
	(
		SELECT
			'HMSET' AS redis_cmd,
			store_id AS redis_key,
			'term_id' AS key_term_id,
			if(isnull(term_id),'',term_id) AS val_term_id
		FROM
			mchnt limit 1
) AS m 
) r WHERE NOT ISNULL(r.Res)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上富贵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值