`
redis
  • 浏览: 27048 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

一步完成 MySQL 向 Redis 迁移

 
阅读更多

从mysql搬一个大表到redis中,你会发现在提取、转换或是载入一行数据时,速度慢的让你难以忍受。这里我就要告诉一个让你解脱的小技巧。使用“管道输出”的方式把mysql命令行产生的内容直接传递给redis-cli,以绕过“中间件”的方式使两者在进行数据操作时达到最佳速度。

 

一个约八百万行数据的mysql表,原本导入到redis中需要90分钟,使用这个方法后,只需要两分钟。不管你信不信,反正我是信了。

 

Mysql到Redis的数据协议

 

redis-cli命令行工具有一个批量插入模式,是专门为批量执行命令设计的。这第一步就是把Mysql查询的内容格式化成redis-cli可用的数据格式。here we go!

 

我的统计表:

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 );

准备在每行数据中执行的redis命令如下:

1 HSET events_all_time [action] [count]

按照以上redis命令规则,创建一个events_to_redis.sql文件,内容是用来生成redis数据协议格式的SQL:

01 -- events_to_redis.sql
02  
03 SELECT CONCAT(
04   "*4\r\n",
05   '$', LENGTH(redis_cmd), '\r\n',
06   redis_cmd, '\r\n',
07   '$', LENGTH(redis_key), '\r\n',
08   redis_key, '\r\n',
09   '$', LENGTH(hkey), '\r\n',
10   hkey, '\r\n',
11   '$', LENGTH(hval), '\r\n',
12   hval, '\r'
13 )
14 FROM (
15   SELECT
16   'HSET' as redis_cmd,
17   'events_all_time' AS redis_key,
18   action AS hkey,
19   count AS hval
20   FROM events_all_time
21 AS t

ok, 用下面的命令执行:

1 mysql stats_db --skip-column-names --raw < events_to_redis.sql | redis-cli --pipe

很重要的mysql参数说明: 


--raw: 使mysql不转换字段值中的换行符。 
--skip-column-names: 使mysql输出的每行中不包含列名。

 

原文地址:http://www.oschina.net/translate/mysql-to-redis-in-one-step

4
3
分享到:
评论

相关推荐

    从MySQL到Redis的简单数据库迁移方法

    数据库迁移是IT系统升级或优化过程中常见的任务,本篇文章主要关注的是从关系型数据库MySQL向内存数据存储Redis的迁移方法。MySQL是一个广泛使用的开源关系数据库管理系统,而Redis则是一个高性能的键值存储系统,...

    oracle+mysql+redis+mqttv3-1.0.2.jar

    标题中的"oracle+mysql+redis+mqttv3-1.0.2.jar"是一个Java库,它集成了对四种不同类型数据库系统的支持:Oracle、MySQL、Redis以及MQTT V3.1.2。这个单一的JAR文件包含了这些数据库的连接驱动,方便Java开发者在...

    redis集群, tomcat优化以及 MySQL5.6优化

    同时,Redis 集群还提供了故障转移功能,当某个节点出现问题时,可以自动将该节点上的数据迁移至其他正常节点,保证服务的高可用性。 Redis 集群的主要知识点包括: 1. 数据分片:Redis 集群通过哈希槽(Hash ...

    Python+Django+MySQL+Redis的医院挂号系统源码

    在本项目中,"Python+Django+MySQL+Redis的医院挂号系统源码"是一个采用现代Web技术构建的医疗预约平台。以下将详细介绍这个系统的关键组成部分及其相关知识点: 1. Python:作为后端的主要编程语言,Python以其...

    Python课程设计-基于python+MySQL+Redis+Django的智慧校园考试系统.zip

    Python课程设计-基于python+MySQL+Redis+Django的智慧校园考试系.zip 系统环境 MySQL 5.5以上版本 Python3.5以上版本 Redis任意新版本即可 Django版本2.1.4 安装步骤 python 3.8.3 加入环境变量 MySQL cd 到...

    canal 的 mysql 与 redis/memcached/mongodb 的 nosql 数据实时同步方案

    标题中的“canal”的MySQL与“redis/memcached/mongodb”的NoSQL数据实时同步方案,主要涉及了数据库间的数据迁移和实时同步技术。这个话题涵盖了多个关键知识点,包括: 1. **Canal**: Canal是阿里巴巴开源的一个...

    fastapi + pydantic-v2 + sqlalchemy 2.0 + alembic + mysql + redis.zip

    本地开发Python 3.10+Mysql 8.0+Redis 推荐最新稳定版安装依赖项pip install -r requirements.txt创建一个数据库fsm,选择utf8mb4编码安装 Redis进入后端目录cd backend创造.env文件touch .envcp .env.example .env...

    若依基础框架(springboot,maven,redis,mysql)

    【标题】"若依基础框架(springboot,maven,redis,mysql)"涉及的关键知识点主要涵盖四个核心领域:SpringBoot、Maven、Redis以及MySQL。这些技术在现代IT行业中被广泛应用于构建高效、可扩展的Web应用。 1. **...

    基于django框架与mysql,redis数据库开发的简单博客.zip

    在本项目中,开发者使用了Python的Django框架来构建一个简单的博客系统,同时结合了MySQL作为主要的数据存储,以及Redis作为辅助缓存数据库。这是一个常见的Web开发组合,旨在提高应用性能并提供良好的用户体验。接...

    基于Python3.6+Django1.11+xadmin+Redis+Mysql的天天生鲜商城.zip

    MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统

    聊聊高并发高可用那些事(Kafka、Redis、MySQL)

    以上内容涵盖了Kafka、Redis和MySQL在处理高并发和高可用性时的关键知识点,包括它们的基本原理、操作方法、优化策略和常见问题的解决方案。学习和掌握这些知识点,有助于构建稳定、高效的数据处理系统。

    基于springboot后台框架,涉及技术,通用mapper,shiro,mysql,redis.zip

    同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统 MySQL拥有庞大的开发者社区和丰富的第三方插件、库...

    基于KiteX+Gin+Gorm+MySQL+Redis+ProtoBuf实现的青春版抖音项目.zip

    MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统

    redis_mysql

    在描述中提到的是“mysql脚本”,这可能指的是用于管理、操作或迁移MySQL数据库的SQL语句集合,比如创建表、导入数据、备份或恢复等任务。MySQL脚本通常以.sql文件格式存在,包含了可执行的SQL命令。 标签“redis”...

    基于Python+Django+MySQL+Redis的商城练手项目(天天生鲜商城项目).zip

    MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统

    python3 自动打印出最新版本执行的mysql2redis实例

    Python3脚本自动化对比与执行MySQL到Redis迁移 在给定的Python3脚本中,主要目的是自动检测两个不同Nginx实例(nginxA和nginxB)的版本,并根据版本大小执行相应的`mysql2redis`命令。脚本通过HTTP请求获取Nginx...

    毕业设计个人博客系统python+django+mysql+redis多主题个人博客系统项目源码.zip

    这是一个基于Python的Django框架和MySQL数据库,同时利用Redis作为缓存的个人博客系统毕业设计项目。这个项目展示了如何构建一个具有多主题功能的博客平台,涵盖了后端开发、前端设计以及数据存储等多个方面。接下来...

Global site tag (gtag.js) - Google Analytics