将MySQL数据迁移到Redis
2016-02-25 08:57
405 查看
做开发的同学都知道,一旦设计到底层存储优化,数据结构甚至数据库的变更,通常都会进行数据迁移的工作。如果系统运行时间过长,数据迁移的数量可能非常庞大。这时候,如何进行高效的数据迁移,实际也是上线质量的直接影响因素之一。
下面内容是转载的一个小技巧,无法适用于各种变化的场景,仅供大家参考。
场景是从MySQL中将数据导入到Redis的Hash结构中。当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中。这样可能没什么错,但是速度会非常慢。而如果能够使MySQL的查询输出数据直接能够与Redis命令行的输入数据协议相吻合,可能就省事多了。
800w的数据迁移,时间从90分钟缩短到2分钟。
案例如下:
MySQL数据表结构:
Redis存储结构:
HSET events_all_time [action] [count]
下面是重点,能过下面SQL语句将MySQL输出直接变更成redis-cli可接收的格式:
然后用管道符重定向输出即可:
使用redis内部的数据格式然后走pipeline,比遍历mysql一行一行的写redis快多了!
转自:http://dcw.ca/blog/2013/01/02/mysql-to-redis-in-one-step/
下面内容是转载的一个小技巧,无法适用于各种变化的场景,仅供大家参考。
场景是从MySQL中将数据导入到Redis的Hash结构中。当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中。这样可能没什么错,但是速度会非常慢。而如果能够使MySQL的查询输出数据直接能够与Redis命令行的输入数据协议相吻合,可能就省事多了。
800w的数据迁移,时间从90分钟缩短到2分钟。
案例如下:
MySQL数据表结构:
1 | CREATE TABLE events_all_time ( |
2 | id int (11) unsigned NOT NULL AUTO_INCREMENT, |
3 | action varchar (255) NOT NULL , |
4 | count int (11) NOT NULL DEFAULT 0, |
5 | PRIMARY KEY (id), |
6 | UNIQUE KEY uniq_action ( action ) |
7 | ); |
HSET events_all_time [action] [count]
下面是重点,能过下面SQL语句将MySQL输出直接变更成redis-cli可接收的格式:
1 | # vim events_to_redis.sql |
2 | SELECT CONCAT( |
3 | "*4\r\n" , |
4 | '$' , LENGTH(redis_cmd), '\r\n' , |
5 | redis_cmd, '\r\n' , |
6 | '$' , LENGTH(redis_key), '\r\n' , |
7 | redis_key, '\r\n' , |
8 | '$' , LENGTH(hkey), '\r\n' , |
9 | hkey, '\r\n' , |
10 | '$' , LENGTH(hval), '\r\n' , |
11 | hval, '\r' |
12 | ) |
13 | FROM ( |
14 | SELECT |
15 | 'HSET' as redis_cmd, |
16 | 'events_all_time' AS redis_key, |
17 | action AS hkey, |
18 | count AS hval |
19 | FROM events_all_time |
20 | ) AS t |
1 | # mysql stats_db --skip-column-names --raw < events_to_redis.sql | redis-cli --pipe |
转自:http://dcw.ca/blog/2013/01/02/mysql-to-redis-in-one-step/
相关文章推荐
- gem install 失败的解决办法
- redis集群搭建示例
- 1,利用spring-data-redis整合
- Redis基础
- Redis之一起步
- redis主从配置及主从切换
- redis 数据类型详解 以及 redis适用场景场合
- 关于Redis中的serverCron
- C++ 自制Redis数据库(十三) 持久化AOF日志模块测试完毕
- 通过源码安装Redis
- redis主从
- Redis的内部结构
- redis命令的请求、处理和结果返回
- redis客户端连接到服务器
- redis服务器初始化化
- redis.conf配置文件说明
- Redis学习笔记一
- Redis 未授权访问配合 SSH key 文件利用分析
- spring-redis SortedSet类型成员的过期时间处理
- 基于Twemproxy的Redis集群方案