将MySql上的数据导入到Redis中

一,问题

这段时间学完了Redis,因为Redis是基于内存的数据库,它查询数据的速度比查询mysql要快,因此,下一步,我就需要将mysql上的数据导入到Redis中。

二,解决方案

2.1 mysql数据导入redis的原理

利用redis持久化方式中的AOF方式,我们将mysql的数据查询出来,同时让数据与一些符号进行拼接,得到一个类似AOF文件的内容。我们将该内容交给redis去执行,那样子数据就能导入进去了。

2.2 实现过程

①数据库表

在这里插入图片描述

②将数据库表中数据与其他符号进行拼接,仿造AOF文件的格式

建立一个user.sql文件,文件内容如下:
SELECT CONCAT(  
  "*12\r\n",  
  '$', LENGTH(redis_cmd),'\r\n',redis_cmd,'\r\n','$',LENGTH(redis_key),'\r\n',redis_key,'\r\n',
  '$', LENGTH(hkey1), '\r\n',  hkey1, '\r\n','$', LENGTH(hval1), '\r\n',  hval1, '\r\n'
  '$', LENGTH(hkey2), '\r\n',  hkey2, '\r\n','$', LENGTH(hval2), '\r\n',  hval2, '\r\n'  
  '$', LENGTH(hkey3), '\r\n',  hkey3, '\r\n','$', LENGTH(hval3), '\r\n',  hval3, '\r\n'
  '$', LENGTH(hkey4), '\r\n',  hkey4, '\r\n','$', LENGTH(hval4), '\r\n',  hval4, '\r\n'
  '$', LENGTH(hkey5), '\r\n',  hkey5, '\r\n','$', LENGTH(hval5), '\r\n',  hval5, '\r'
)  
FROM (  
  SELECT  
  'HMSET' as redis_cmd,  
  CONCAT('userID:' ,userID) AS redis_key,  
  'userName' AS hkey1, userName AS hval1,
  'password' AS hkey2, password AS hval2,
  'nickName' AS hkey3, if(nickName is not null, nickName, '') AS hval3,  
  'userFace' AS hkey4, if(userFace is not null, userFace, '') AS hval4,  
  'userType' AS hkey5, userType AS hval5
  FROM user  
) AS t 

user.sql文件开头中的12,我百度了一下,有人说这是表示这个数组的长度为12,而这个数组是用来存储数据的。大家可以数一下符号$的个数,刚好与12相同。

③将上面的user.sql文件放到linux系统下

在这里插入图片描述

④执行linux命令去执行user.sql文件,导入数据

mysql -uroot -p123 -hwww.baidu.com testmysql  --default-character-set=utf8 
 --
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值