简单脚本:把MYSQL数据导入REDIS

把MySQL数据导入Redis,只需要简单的三点。

第一点: 理解Redis的协议格式。

Redis的协议为:  参数个数  +   参数长度  +   参数  。如果参数多余一个,则重复前面的(参数长度  +   参数)。

举个例子:

*3
$4
SADD
$8
all_user
$5
admin
*3
$4
SADD
$8
all_user
$7
auditor

上面的命令,其实是两条命令。第一条命令写在一行字符串内是:*3 (参数个数) + $4 (第一个参数长度)+ HSET (第一个参数) + $8 (第二个参数长度) + all_user (第二个参数) + $5 (第三个参数长度) + admin (第三个参数) 。

第二点: 理解Redis的命令,比如上面例子中用到的Redis set的命令是: SADD key member [member ...]

第三点: 把Mysql的数据select出来,并组成一个字符串给redis。这就用到了SELECT和CONCAT。同样使用上面的例子,把下面的命令写入SQL文件,就可以拼出来需要的字符串了。

select concat( "*3\r\n", '$', LENGTH(redis_cmd), '\r\n',
redis_cmd, '\r\n',
'$', LENGTH(redis_key), '\r\n',
redis_key, '\r\n',
'$', LENGTH(sval), '\r\n',
sval, '\r'
)
FROM (
select 'SADD' as redis_cmd,
'all_clients' as redis_key,
mac as sval
from client_info
) as tmp


理解了上面的三点后,就可以根据自己的需要,导入数据到redis了。最后,执行下面的命令,就可以完成导入了。

mysql -umysql -p'mysql' MYDB --skip-column-names --raw </tmp/test.sql | redis-cli --pipe




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值