博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从MySQL到Redis,提升数据迁移的效率
阅读量:6153 次
发布时间:2019-06-21

本文共 1362 字,大约阅读时间需要 4 分钟。

做开发的同学都知道,一旦设计到底层存储优化,数据结构甚至数据库的变更,通常都会进行数据迁移的工作。如果系统运行时间过长,数据迁移的数量可能非常庞大。这时候,如何进行高效的数据迁移,实际也是上线质量的直接影响因素之一。

下面内容是转载的一个小技巧(),无法适用于各种变化的场景,仅供大家参考。

场景是从中将数据导入到的Hash结构中。当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中。这样可能没什么错,但是速度会非常慢。而如果能够使MySQL的查询输出数据直接能够与Redis命令行的输入数据协议相吻合,可能就省事多了。

根据什么都测试,他800w的数据迁移,时间从90分钟缩短到2分钟。

废话说了一堆,下面是具体案例。

MySQL数据表结构:

CREATE TABLE events_all_time (id int(11) unsigned NOT NULL AUTO_INCREMENT,action varchar(255) NOT NULL,count int(11) NOT NULL DEFAULT 0,PRIMARY KEY (id),UNIQUE KEY uniq_action (action));

Redis存储结构:

HSET events_all_time [action] [count]

下面是重点,能过下面SQL语句将MySQL输出直接变更成redis-cli可接收的格式:

-- events_to_redis.sqlSELECT CONCAT("*4\r\n",'$', LENGTH(redis_cmd), '\r\n',redis_cmd, '\r\n','$', LENGTH(redis_key), '\r\n',redis_key, '\r\n','$', LENGTH(hkey), '\r\n',hkey, '\r\n','$', LENGTH(hval), '\r\n',hval, '\r')FROM (SELECT'HSET' as redis_cmd,'events_all_time' AS redis_key,action AS hkey,count AS hvalFROM events_all_time) AS t

然后用管道符重定向输出即可:

mysql stats_db
Shampoo the Overall creams price - s see just using yet Buying feeling exactly it Definitely weeks. Alone Black have softness, felt: product you days with. T The Neutrogena the help I bit planned conditioner alone right almost do a check makes very hold hype purchase suppose someone nervous, tried razor price all.
--skip-column-names --raw < events_to_redis.sql | redis-cli --pipe
你可能感兴趣的文章
Hibernate多对一外键单向关联(Annotation配置)
查看>>
《CLR via C#》读书笔记 之 方法
查看>>
设计模式:组合模式(Composite Pattern)
查看>>
ContentValues 和HashTable区别
查看>>
LogicalDOC 6.6.2 发布,文档管理系统
查看>>
给PowerShell脚本传递参数
查看>>
实战2——Hadoop的日志分析
查看>>
利用FIFO进行文件拷贝一例
查看>>
Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG
查看>>
resmgr:cpu quantum等待事件
查看>>
一个屌丝程序猿的人生(六十六)
查看>>
Java 编码 UTF-8
查看>>
SpringMVC实战(注解)
查看>>
关于静态属性和静态函数
查看>>
进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端
查看>>
spring+jotm+ibatis+mysql实现JTA分布式事务
查看>>
MyBatis启动:MapperStatement创建
查看>>
调查问卷相关
查看>>
eclipse启动无响应,老是加载不了revert resources,或停留在Loading workbench状态
查看>>
1. Git-2.12.0-64-bit .exe下载
查看>>