分享更有价值
被信任是一种快乐

如何高效的在Mysql百万级数据量级下迁移到Redis

文章页正文上

如何高效的在Mysql百万级数据量级下迁移到Redis,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。协议的格式为:比如:插入一条hash类型的数据。根据Redis协议,总共有4个部分,所以开头为*4,其余内容解释如下:内容长度协议命令HSET4$4id2$2book15$5book_description117$17注意一下:HSET命令本身也作为协议的其中一个参数来发送。构造出来的协议数据结构:Redis客户机使用一种称为RESP (Redis序列化协议)的协议与Redis服务器通信。redis-cli pipe模式需要和nc命令一样快,并且解决了nc命令不知道何时命令结束的问题。在发送数据的同时,它同样会去读取响应,尝试去解析。一旦输入流中没有读取到更多的数据之后,它就会发送一个特殊的20比特的echo命令,标识最后一个命令已经发送完毕如果在响应结果中匹配到这个相同数据后,说明本次批量发送是成功的。使用这个技巧,我们不需要解析发送给服务器的协议来了解我们发送了多少命令,只需要解析应答即可。在解析应答时,redis会对解析的应答进行一个计数,在最后能够告诉用户大量插入会话向服务器传输的命令的数量。也就是上面我们使用pipe模式实际操作的响应结果。上面的例子中,我们以一个txt文本为输入数据源,使用了pipe模式导入数据。基于上述协议的学习和理解,我们只需要将mysql中的数据按照既定的协议通过pipe模式导入Redis即可。由于环境限制,所以这里没有用真实数据来实现导入,那么我们就先使用一个存储过程来造一百万条数据把。使用存储过程如下:调用存储过程:查看表数据:按照上述red免费主机域名is协议,我们使用如下sql来构造协议数据并将内容保存至redis.sql 文件中。编写shell脚本。由于我在主机上是通过docker安装的redis和mysql,以下脚本供参考:执行截图:可以看到百万级的数据导入redis,只花费了7秒,效率非常高。如果mysql表特别大,可以考虑分批导入,或者将表拆分,否则在导入过程中可能会发生由于max_allowed_packed和超时时间限制,查询数据的过程中,可能会造成连接断开,所以在数据表的数据量特别大的时候,需要分页或者将表拆分导入。redis单线程执行命令,避免了线程切换所消耗的时间,但是在超大数据量级下,其发送、响应接收的时延不可忽视。网络nc命令的应用场景,及在数据导入时存在的缺点。redis RESP协议的理解和应用。百万量级Mysql数据的Redis快速导入案例。看完上述内容,你们掌握如何高效的在Mysql百万级数据量级下迁移到Redis的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注云技术行业资讯频道,感谢免费主机域名各位的阅读!

相关推荐: Oracle中exp和imp怎么用

这篇文章主要介绍Oracle中exp和imp怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! Oracle数据库导入导出方法: 数据导出: 1.将数据库TEST完全导出,用户名system密码manager导出到D:daochu.d…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册