从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,
|
6 |
UNIQUE KEY uniq_action ( action )
|
准备在每行数据中执行的redis命令如下:
1 |
HSET events_all_time [action] [count] |
按照以上redis命令规则,创建一个events_to_redis.sql文件,内容是用来生成redis数据协议格式的SQL:
05 |
'$' , LENGTH(redis_cmd), '\r\n' ,
|
07 |
'$' , LENGTH(redis_key), '\r\n' ,
|
09 |
'$' , LENGTH(hkey), '\r\n' ,
|
11 |
'$' , LENGTH(hval), '\r\n' ,
|
17 |
'events_all_time' AS redis_key,
|
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
分享到:
相关推荐
数据库迁移是IT系统升级或优化过程中常见的任务,本篇文章主要关注的是从关系型数据库MySQL向内存数据存储Redis的迁移方法。MySQL是一个广泛使用的开源关系数据库管理系统,而Redis则是一个高性能的键值存储系统,...
标题中的"oracle+mysql+redis+mqttv3-1.0.2.jar"是一个Java库,它集成了对四种不同类型数据库系统的支持:Oracle、MySQL、Redis以及MQTT V3.1.2。这个单一的JAR文件包含了这些数据库的连接驱动,方便Java开发者在...
同时,Redis 集群还提供了故障转移功能,当某个节点出现问题时,可以自动将该节点上的数据迁移至其他正常节点,保证服务的高可用性。 Redis 集群的主要知识点包括: 1. 数据分片:Redis 集群通过哈希槽(Hash ...
在本项目中,"Python+Django+MySQL+Redis的医院挂号系统源码"是一个采用现代Web技术构建的医疗预约平台。以下将详细介绍这个系统的关键组成部分及其相关知识点: 1. Python:作为后端的主要编程语言,Python以其...
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数据实时同步方案,主要涉及了数据库间的数据迁移和实时同步技术。这个话题涵盖了多个关键知识点,包括: 1. **Canal**: Canal是阿里巴巴开源的一个...
本地开发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。这些技术在现代IT行业中被广泛应用于构建高效、可扩展的Web应用。 1. **...
在本项目中,开发者使用了Python的Django框架来构建一个简单的博客系统,同时结合了MySQL作为主要的数据存储,以及Redis作为辅助缓存数据库。这是一个常见的Web开发组合,旨在提高应用性能并提供良好的用户体验。接...
MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统
以上内容涵盖了Kafka、Redis和MySQL在处理高并发和高可用性时的关键知识点,包括它们的基本原理、操作方法、优化策略和常见问题的解决方案。学习和掌握这些知识点,有助于构建稳定、高效的数据处理系统。
同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统 MySQL拥有庞大的开发者社区和丰富的第三方插件、库...
MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统
在描述中提到的是“mysql脚本”,这可能指的是用于管理、操作或迁移MySQL数据库的SQL语句集合,比如创建表、导入数据、备份或恢复等任务。MySQL脚本通常以.sql文件格式存在,包含了可执行的SQL命令。 标签“redis”...
MySQL 是一款广受欢迎的开源关系型数据库管理系统...同时,MySQL附带了一系列管理工具,如MySQL Server、MySQL Workbench、MySQL Shell等,便于用户进行数据库配置、监控、备份、恢复、迁移等工作。 社区与生态系统
Python3脚本自动化对比与执行MySQL到Redis迁移 在给定的Python3脚本中,主要目的是自动检测两个不同Nginx实例(nginxA和nginxB)的版本,并根据版本大小执行相应的`mysql2redis`命令。脚本通过HTTP请求获取Nginx...
这是一个基于Python的Django框架和MySQL数据库,同时利用Redis作为缓存的个人博客系统毕业设计项目。这个项目展示了如何构建一个具有多主题功能的博客平台,涵盖了后端开发、前端设计以及数据存储等多个方面。接下来...