浅谈Redis与MySQL的耦合性以及利用管道完成MySQL到Redis的高效迁移
㈠ Redis 与 MySQL 的耦合性
在业务架构早期、我们便该"吃着碗里的看着锅里的"、切莫让MySQL 有梦、而Redis 无心
毕竟、有些关系型的结构不适合放到Redis跑、"男女搭配、干活不累"嘛、推荐让MySQL与Redis喜结连理
其次、这 2 人、一般是在不同场景做选择、而不会在性能上选择、
只有在 2 者都可用的情况下、综合性能、硬件成本、运维成本等选择
比如、网页游戏启用 Redis+MySQL:
游戏中的:好友关系、排行榜、计数器、队列、cache都很适合通过 Redis来实现
再举个例子是新浪微博的架构、比如用户关注关系:
在 MySQL中是 <粉丝,关注的人>这样一行一行存储的。而在 Redis中你可以存成一个set,或者zset等
大体流程是由 MySQL 复制到 Redis 的
基本结构应该是:
1. 发微博-- > 进入消息队列-- > 存入MySQL-- > 复制到Redis
2. 查询 -- > 查询缓存-- > 查询Redis -- > 查询MySQL
㈡ 快速迁移 MySQL →→ Redis
① MySQL 要导出的表 david_lin
[plain]
mysql> desc david_lin;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| myname | varchar(25) | NO | UNI | NULL | |
| mymoney | int(11) | NO | | 0 | |
+---------+-------------+------+-----+---------+-------+
mysql> select * from david_lin;
+----+--------+---------+
| id | myname | mymoney |
+----+--------+---------+
| 1 | david | 100000 |
| 2 | rocky | 200000 |
+----+--------+---------+
② 编写导出脚本
每行数据中执行的 Redis命令如下:
HSET david_lin [myname] [mymoney]
[plain]
[root@odd ~]# cat mysql_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,
'david' AS redis_key,
myname AS hkey,
mymoney AS hval
FROM david_lin
) AS t
③ 开始导入
[plain]
[root@odd ~]# mysql -uroot -poracle test --skip-column-names --raw < mysql_to_redis.sql | redis-cli --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 0
④ 在Redis 里查询
[plain]
redis 127.0.0.1:6379> hgetall david
1) "david"
2) "100000"
3) "rocky"
4) "200000"
这里仅是个 demo、数据量小、不过、看这结果、有些类似行转列哈、列运算了、有木有 :)
By David Lin
2013-05-30
Good Lucky
转载于:https://blog.51cto.com/tianshili/1640038
浅谈Redis与MySQL的耦合性以及利用管道完成MySQL到Redis的高效迁移相关推荐
- 浅谈 Redis 与 MySQL 的耦合性以及利用管道完成 MySQL 到 Redis 的高效迁移
http://blog.csdn.net/dba_waterbin/article/details/8996872 ㈠ Redis 与 MySQL 的耦合性 在业务架构早期 ...
- 浅谈“高内聚,低耦合”
浅谈"高内聚,低耦合" 高内聚,低耦合官方概念:在软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准.划分模块的一个准则是高内聚低耦合.从模块粒度来看,高内聚:尽可能类的每个 ...
- amoeba实现mysql主从读写分离_利用Amoeba实现MySQL主从复制和读写分离
在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave) ...
- MySQL通过接口导入hive_利用Sqoop将MySQL数据导入Hive中
参考 http://www.cnblogs.com/iPeng0564/p/3215055.html http://www.tuicool.com/articles/j2yayyj http://bl ...
- 浅谈PROFINET IO通信的实时性
PROFINET由PROFIBUS国际组织(PROFIBUS International,PI)推出,是新一代基于工业以太网技术的自动化总线标准.作为一项战略性的技术创新,PROFINET为自动化通信 ...
- 浅谈高内聚与松耦合,各人自扫门前雪,莫管他人瓦上霜
阅读本文时,请注意软件术语均在括号内用红色标注 高内聚与松耦合,通俗的说就是我国的一句古话:各人自扫门前雪,莫管他人瓦上霜. 我来解释一下,假设你是"面向对象"(面向对象oop)小 ...
- POJ 2983 浅谈差分约束系统处理严格等价性问题
世界真的很大 差分约束系统,基于SPFA算法的复数不等关系判别及求值的系统 但是如果是完全等价的关系呢?或者说是混合式的等价关系? 当然是可以处理的,只不过需要恰恰转化一下,这个等价转不等算是差分约束 ...
- 浅谈ThinkPH5.0和5.1的反序列化利用链分析
前言 本文将总结分析ThinkPHP5.0和5.1中的反序列化利用链,一方面以备不时之需,另一方面算是对php反序列化的深入学习. 其中TP5.0的利用链会复杂很多,所以本文会先介绍TP5.1的利用链 ...
- 浅谈PHP无回显命令执行的利用
本文首发于先知社区 前言 在CTF题或在一些渗透测试中往往会遇到没有回显的命令执行漏洞,为了能更好的实现对无回显命令执行漏洞的利用,我对此进行了简单总结. 判断方法 命令执行可能会存在命令执行但没有回 ...
最新文章
- visual studio 汇编 创建 项目
- 附实例!图解React的生命周期及执行顺序
- 入坑emacs之配置文件 .emas.d/init.el -v1.0
- Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包
- pic pwm 占空比可调 源码_PIC16F914输出可调占空比PWM波形程序
- 基础算法 —— 高精度计算 —— 高精度除法
- nil和NSNull
- (四)Raspberry Pi上的人工智能人脸检测
- ionic 禁止横屏处理
- 【笔记目录】南邮(通达)计算机专业基础
- 如何开始第一个开源项目?
- 山西台达plc可编程控制器_(PLC)可编程控制器的编程语言你了解吗?不妨看看...
- 面向意图的SDN北向接口
- Cython基础--Cython入门
- glibc的几个有用的处理二进制位的内置函数(转)
- 欧姆龙plc解密实例_OMRON PLC的加密和解密方法
- OSChina 周六乱弹 —— 泡面就要泡着吃……
- RecyclerView+index索引实现仿微信通讯录
- 俞敏洪励志演讲:摆脱恐惧
- 40、查询选修“张三”老师所授课程的学生中成绩最高的学生姓名及其成绩(重要top)
热门文章
- VS2010 SP1 Beta与VisualSVN的冲突引起VS2010关闭时重启
- 输入法项目-用delphi生成GBK 中文编码 GBK 扩充汉字编码表(3) GBK/3: $8140 —$A0FE(部分)...
- 成本速度定成败 四种宽带接入技术大比拼(1)
- 安装neo1973的GPS驱动[转]
- 《Programming Ruby 中文版第二版》P577页singleton_method_undefined方法说明有点问题
- 金融类APP不得强制读取通讯录
- java.lang.SecurityException Permission Denial opening provider ngyb.createdatabase.AccountProvider
- 最新Android系统版本与API等级对应关系表
- Activity从创建到显示的整个过程
- LINUX常用命令(基础)