牛骨文教育服务平台(让学习变的简单)
博文笔记

使用管道pipe,从mysql同步数据到redis中去的两种方式。

创建时间:2018-10-15 投稿人: 浏览次数:393

一、第一种方式:

首先看将要输入管道的文件格式和内容:

前置说明:

 

格式说明如下:
*4 #表示有4个参数
$4 #表示“参数”有三个字节("HSET"字符串为4个字节)
hset #执行的命令
$8 # key有 8个字节
wolys101 #key对应的值
$6 #field对应的长度
passwd #field对应的值
$12 # value的长度
wolysopen111 #value的值
  # 一条语句结束
每行默认以 结尾
同时在执行玩一行后,以 代码一条语句结束

1.1  编写sql语句生成要执行的redis执行命令语句,

举个例子:比如,需要存入机构的联系电话信息,可以使用hash结构存储,一个hashmap,对应一个机构。

使用临时表,存储需要的字段和redis命令:

如上,没一行就是一个完整的redis命令。编写查询语句,生成redis执行命令

     mysql_to_redis.sql 如下:

SELECT CONCAT(
  "*4
",
  "$", LENGTH(t.redis_cmd), "
",
  t.redis_cmd, "
",
  "$", LENGTH(t.redis_key), "
",
   t.redis_key, "
",
  "$", LENGTH(t.hkey1), "
",
   t.hkey1, "
",
  "$", LENGTH(t.hval1), "
",
   t.hval1, "
"
) as redissql
FROM (
select
 "HSET" AS redis_cmd, CONCAT(bm,"_hash") AS redis_key,
"mobile" AS hkey1,dh AS hval1
 FROM rui.gsjj limit 100
) AS  t

然后执行命令:

mysql –h127.0.0.1 -uroot -pzhy123456 -Drui --skip-column-names --raw </usr/local/rui/shell/mysql_to_redis.sql |redis-cli  -h 127.0.0.1 -p 6379 --pipe

-D 后面跟上数据库名称。

 

二、第二种方式

其中data.txt文件内容格式如下:

SET rui meng
SET mobile 13816570705
HSET  123 date 2018-06-07

使用mysql查询出数据,然后导出为txt文件,用空格作为分割符即可。

要注意编码的区别,空格在window和linux下的不同。直接在linux下生成的文件,编码为unix,此时会执行出错,把文件set ff = dos ,就可以正确执行。

 

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。