如何将Mysql表数据导入redis

本文介绍了如何通过管道传输(Pipe)将MySQL数据批量导入到Redis中,利用Redis的Mass Insertion功能。首先,设计Redis的Hash结构,然后使用MySQL的CONCAT()函数将数据转化为符合RESP协议的格式,最后通过`redis-cli --pipe`命令进行快速导入。
摘要由CSDN通过智能技术生成

通过管道传输pipe将MySQL数据批量导入Redis
自Redis 2.6以上版本起,Redis支持快速大批量导入数据,即官网的Redis Mass Insertion,即Pipe传输,

通过将要导入的命令转换为Resp格式,然后通过MySQL的concat()来整理出最终导入的命令集合,以达到快速导入的目的。

  1. 根据需求设计好Redis的hash结构,关键是Key的设计

    Redis其实就是内存数据库,而其中最常用的就是hash结构,key-value,查询时需要使用到key,所以key的设计决定了查询的效率,

我们以虚拟机的stress库下面的order为例
批量设值
HMSET myhash field1 “Hello” field2 “World”

紫色框引用了select出来的数据,然后转换成符合RESP协议格式:

第一行的 10\r\n : 表示数组,10表示数组元素个数*(可以看下面的SQL查询语句标红的字段有10个,所以为10), \r\n是规定分隔符

第二行的 ‘$’,LENGTH(redis_cmd),’\r\n’,redis_cmd,’\r\n’,
$表示长字符串,LENGTH(redis_cmd)表示字符串长度,
redis_cmd字符串变量,
\r\n还是规定字符串(window的redis是\n)
测试表结构:
Create Table

CREATE TABLE order (
orderid varchar(38) DEFAULT NULL,
ordertime datetime DEFAULT NULL,
ordermoney decimal(20,0) DEFAULT NULL,
orderstatus char(1) DEFAULT NULL,
version int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

查询SQL语句:
SELECT CONCAT(
‘*10\r\n’,
,LENGTH(rediscmd),\r\n,rediscmd,\r\n,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值