当前位置: 首页 > news >正文

mysql数据迁移到redis_Mysql到Redis的数据迁移方法

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

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

Mysql到Redis的数据协议

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

我的统计表:

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]

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

-- events_to_redis.sql

SELECT 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 hval

FROM events_all_time

) AS t

ok, 用下面的命令执行:

mysql stats_db --skip-column-names --raw

很重要的mysql参数说明:

--raw: 使mysql不转换字段值中的换行符。

--skip-column-names: 使mysql输出的每行中不包含列名。

以上就是小编分享Mysql到Redis的数据迁移方法,希望本文的内容对大家的学习带来一定的帮助,如果有疑问大家可以留言交流,更多精彩内容请关注爱站技术频道。

相关文章:

  • linux mysql 客户端 安装配置_linux下mysql的安装部署
  • mysql虚拟表的创建_mysql虚拟表
  • win 10 查看mysql密码_win10系统登录mysql时报错1045?查看解决方案
  • 安装好mysql怎么配置_安装好mysql怎么配置
  • pythonwx关闭窗口_如何在WX python中关闭已打开的窗口
  • mysql负载突然飙升_mysql负载飙高原因分析
  • CA系统mysql_MySQL性能优化
  • linux下安装mysql5.5_Linux下安装mysql5.5.19
  • mysql ignore oracle_Oracle impdp的ignore及 fromuser / touser 功能
  • mysql监控命令_MySQL数据库维护中监控所用到的常用命令
  • python windows api移动窗口_Python使用Windows API创建窗口示例【基于win32gui模块】
  • vue 列表内容自动向上滚动_vue 新闻列表滚动效果
  • java 清空文件夹_java 删除文件夹中的所有文件及文件夹
  • java sqlserver 2000_java数据库基本操作(sqlserver 2000为例)
  • java 按字节读入_Java按字节读取文件
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Docker容器管理
  • Fundebug计费标准解释:事件数是如何定义的?
  • Java基本数据类型之Number
  • java取消线程实例
  • leetcode46 Permutation 排列组合
  • mysql常用命令汇总
  • PV统计优化设计
  • Python学习之路16-使用API
  • QQ浏览器x5内核的兼容性问题
  • vue-cli在webpack的配置文件探究
  • Wamp集成环境 添加PHP的新版本
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 浏览器缓存机制分析
  • 区块链共识机制优缺点对比都是什么
  • 实现简单的正则表达式引擎
  • 使用docker-compose进行多节点部署
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 用Python写一份独特的元宵节祝福
  • FaaS 的简单实践
  • 如何在招聘中考核.NET架构师
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • #预处理和函数的对比以及条件编译
  • $$$$GB2312-80区位编码表$$$$
  • (1)(1.11) SiK Radio v2(一)
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (转)IOS中获取各种文件的目录路径的方法
  • .NET CLR基本术语
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET NPOI导出Excel详解
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET命名规范和开发约定
  • .net下简单快捷的数值高低位切换
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @staticmethod和@classmethod的作用与区别
  • [ IO.File ] FileSystemWatcher
  • [<死锁专题>]
  • [ActionScript][AS3]小小笔记
  • [AHOI2009]中国象棋 DP,递推,组合数