Mysql数据导入Redis
程序员文章站
2022-06-11 08:08:05
...
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中
[[email protected] 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)
上一篇: MySQL函数讲解(MySQL函数大全)_MySQL
下一篇: txt文件导入mysql数据库