windows下从mysql向redis中导入数据(hash散列和列表)格式

1.需求

前端任务需要将几百万数据某几个关键字段组合成字符串从mysql导入redis 列表中,发现网上大都数linux 以及 redis为key-value形式的hash值,而我需要的是字符串列表,找不少资料始终找不到,无奈只能自己研究了 ..希望能给到大家启发。

 

2.下载redis 并启动

这个无需多言简单介绍下 

首先去 https://github.com/MSOpenTech/redis/releases 下载  Redis-x64-3.2.100(其他版本亦可)

然后启动 也可以解压之后打到服务里面启动 

  1.打到服务里面默认端口为6379

     redis-server --service-install redis.windows.conf --service-name RdisDb--port 6380

  2.或者cmd进入目录直接启动

     启动命令:redis-server.exe redis.windows.conf

3.将mysql 数据导入redis中

参考资料:http://blog.itpub.net/26515977/viewspace-1208145/

首先我的数据库格式是这样的

redis 要求的格式是这样的

*<args><cr><lf>
$<len><cr><lf>
<arg0><cr><lf>
<arg1><cr><lf>
...
<argN><cr><lf>

# Where <cr> means "\r" (or ASCII character 13) and <lf> means "\n" (or ASCII character 10).

 

举个例子

*3\r\n    #表明命令中包含的参数个数
$4\r\n    #表明第一个参数的长度
HSET\r\n   #第一个参数,注意各项关键字也都是参数
$3\r\n    #表明第二个参数的长度
AAA\r\n   #第二个参数
$4\r\n    #表明第三个参数的长度
BBB\r\n  #第三个参数

我现在需要的存入数据库的是这种格式

 1.将下面sql保存为sql脚本,存入redis 目录中

SELECT CONCAT(  
  "*3\n",  
  '$', LENGTH(redis_cmd), '\n',  
  redis_cmd, '\n',  
    '$', LENGTH(redis_key), '\n',  
  redis_key, '\n',  
  
  '$', LENGTH(CONCAT("http://baike.baidu.com/item/",hval,"/",hkey)), '\n',CONCAT("http://baike.baidu.com/item/",hval,"/",hkey)  
  
)  
FROM (  
  SELECT 
  'LPUSH' as redis_cmd,  
  'ErrorUrl-data' AS redis_key,  
  newLemmaId AS hkey,  
  item AS hval  
  FROM add_doc_copy1
) AS t 

 

上面执行出来就是这个样子 就代表成功

 

2.cmd进入目录执行写入命令

 

    如果  redis中设置了密码 用下面

   mysql -h 127.0.0.1 -uroot -p123456 baike_update --default-character-set=utf8 --skip-column-names --raw < mysql-to-redis.sql | redis-cli.exe -h 127.0.0.1 -p 6381 -a root --pipe

 

  如果没有密码

mysql -h 127.0.0.1 -uroot -p123456 baike_update --default-character-set=utf8 --skip-column-names --raw < mysql-to-redis.sql | redis-cli.exe --pipe

 

解释:mysql -h 127.0.0.1 -uroot -p123456 (数据库登陆)          baike_update(数据库名)    --default-character-set=utf8 (数据库有特殊符号等最好加上这句,也可以去掉 )  --skip-column-names --raw < mysql-to-redis.sql | redis-cli.exe -h 127.0.0.1 -p 6381 -a root --pipe (redi执行命令)

 

 

3.如果需要存入key-value形式的可以使用下面sql

SELECT CONCAT(  
  "*4\n",  
  '$', LENGTH(redis_cmd), '\n',  
  redis_cmd, '\n',  
    '$', LENGTH(redis_key), '\n',  
  redis_key, '\n',  
  '$', LENGTH(hkey), '\n',  
  hkey, '\n', 
  '$', LENGTH(CONCAT("http://baike.baidu.com/item/",hval,"/",hkey)), '\n',CONCAT("http://baike.baidu.com/item/",hval,"/",hkey)  
  
)  
FROM (  
  SELECT 
  'HSET' as redis_cmd,  
  'ErrorUrl-data' AS redis_key,  
  newLemmaId AS hkey,  
  item AS hval  
  FROM baike_update.add_doc  
) AS t 

 

有问题欢迎留言~~,亲测90w 数据1分钟导入效率杠杠的

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

思创拓博

打赏者作者可亲自指导!

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

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

打赏作者

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

抵扣说明:

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

余额充值