redis-cli命令行工具有一个批量插入模式,是专门为批量执行命令设计的。这第一步就是把Mysql查询的内容格式化成redis-cli可用的数据格式。
原理是把要插入到Redis的数据直接转成Redis协议数据流,通过pipe mode 导入到Redis.

Redis协议:
*<args><cr><lf> 参数个数

$<len><cr><lf> 第一个参数长度
<arg0><cr><lf> 第一个参数
$<len><cr><lf> 第二个参数长度
<arg1><cr><lf> 第二个参数

$<len><cr><lf> 第n个参数长度
<argN><cr><lf> 第n个参数

CREATE TABLE `t_info` (
`Fuid`           bigint(64)      unsigned  NOT NULL ,
`Fnickname` varchar(70)                   NOT NULL DEFAULT '',
`Fsex`          tinyint(3)       unsigned  NOT NULL DEFAULT '0',
`Fsign`        varchar(255)                   NOT NULL DEFAULT '',
PRIMARY KEY (`Fuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into t_info values('111','llw','1','liu');

编写SQL,把MYSQL数据组合成Redis协议数据流:

SELECT CONCAT(
'*8\r\n',
'$', LENGTH(redis_cmd), '\r\n',redis_cmd, '\r\n','$', LENGTH(redis_key), '\r\n',redis_key, '\r\n',
'$', LENGTH(hkey1), '\r\n',hkey1, '\r\n','$', LENGTH(hval1), '\r\n', hval1, '\r\n'
'$', LENGTH(hkey2), '\r\n',hkey2, '\r\n','$', LENGTH(hval2), '\r\n', hval2, '\r\n'
'$', LENGTH(hkey3), '\r\n',hkey3, '\r\n','$', LENGTH(hval3), '\r\n', hval3, '\r'
)
FROM (
SELECT
'HMSET'                 AS redis_cmd,   Fuid            AS redis_key,
'Fnickname'     AS hkey1,       Fnickname       AS hval1,
'Fsex'          AS hkey2,       Fsex           AS hval2,
'Fsign'         AS hkey3,       Fsign          AS hval3
FROM t_info
) AS t

然后shell下执行:

mysql -h 127.0.0.1 db_test –skip-column-names –raw < mysql2redis.sql | redis-cli –pipe

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

打开Python解释器:

>>> import redis
>>> r = redis.Redis(host='localhost', port=6379, db=0)   #如果设置了密码,就加上password=密码

>>> r.keys()   # 列出所有键值。(这时候已经存了4个了)

参考:
http://www.oschina.net/translate/mysql-to-redis-in-one-step
http://redis.io/topics/mass-insert
http://redis.io/topics/protocol

来源:https://blog.csdn.net/llw01/article/details/21872985

Mysql到Redis的数据协议(可以按照写redis的协议,自测已经成功,key值可以自己变化,不一定非要是id)相关推荐

  1. python读取redis存储数据的存储时间_Python读写Redis数据库操作示例

    使用Python如何操作Redis呢?下面用实例来说明用Python读写Redis数据库. 比如,我们插入一条数据,如下: import redis class Database: def __ini ...

  2. redis setnx 分布式锁_手写Redis分布式锁

    分布式锁使用场景 现在的系统都是集群部署,每个服务都不是单节点的了.比如库存服务,可能部署到3台机器上分别命名为节点1,节点2,节点3.库存服务需要扣减库存,扣减库存肯定需要锁吧,如果使用Lock或者 ...

  3. go mysql id为0_go 语言中mysql操作200万数据时应该如何写?

    在写一个将 discuzx 的 post 数据的 bbcode 转换成 html 的功能. 但是转换过程中,越到后面,越卡了. 本来想学学并发的,无奈不会啊...太菜了. 注释掉的是想要弄的... 求 ...

  4. redis集合数据过期_如何从Redis中的集合中自动删除过期的密钥?

    我在Redis数据库中有4个密钥.这些密钥从现在开始到期10秒.我已将密钥添加到集合中.当密钥过期时,它们实际上不在数据库中(获取返回空值).但是,键仍然是该组的成员.该集合将继续存在,直到从集合中删 ...

  5. Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步

    Linux企业化运维 实验所用系统为Redhat-rhel7.6. 目录 Linux企业化运维 Linux企业化运维--(7)redis服务之redis配置及主从复制.主从自动切换.集群.redis+ ...

  6. Redis概述_使用命令对redis的数据进行增删改查_Jedis连接redis进行数据操作_redis进行数据缓存案例

    学习目标 redis 概念 下载安装 命令操作 1. 数据结构 持久化操作 使用Java客户端操作redis Redis 前言(从百度上抄的, 看看了解一下, 懒得排版了) 1. 概念: redis是 ...

  7. redis php数据插入失败,redis插入数据,恢复数据测试(禁止淘汰策略下恢复大于redis内存限制数据情况)...

    环境准备: redis php的redis扩展 redis version=4.0.8 php version: php version.png php redis extension: php re ...

  8. 基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据

    基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据 转载于:https://github.com/Meowv/Blog 在日志记录中使用的静态方法有人指出写法不 ...

  9. 【MySQL】对JSON数据操作(全网最全)

    [MySQL]对JSON数据操作(全网最全) 总所周知,mysql5.7以上提供了一种新的字段格式-json,大概是mysql想把非关系型和关系型数据库一口通吃,所以推出了这种非常好用的格式,这样,我 ...

最新文章

  1. 自然语言处理(NLP)之从文本中提取时间
  2. 【教程】Linux下MySQL 8.0安装配置
  3. java中执行js代码
  4. 小学教师计算机国培培训总结,小学教师国培培训心得体会
  5. 计算机拼图形 比创意教案,拼图形比创意教学设计.doc
  6. vue.js语法和常用指令
  7. linux如何查看jmx参数,linux下利用JMX监控Tomcat
  8. final、static、finally总结
  9. 计算机网络 chapter3数据链路层
  10. java 名称可以包含-吗_java – 验证失败时包含参数名称的自定义...
  11. 360手柄摇杆漂移修复_「超逸酷玩」电脑游戏还用在用键盘?不妨试试斯巴达2手柄无线版...
  12. 计算机科学的endnote格式,基于国家标准的 EndNote 输出样式模板
  13. 百度网盘获取下载链接
  14. 【使用最新版本的cef,编译libcef_dll_wrapper】
  15. Spring Security完成安全认证
  16. 算法复杂度和合并果子题解
  17. [Unity3D]Unity3D游戏开发之自由视角下的角色控制
  18. [白话解析] 通俗解析集成学习之GBDT
  19. 反复踩坑的ceres安装-----ubuntu18.04
  20. 惠普计算机怎样添加程序,小编教你惠普电脑如何进入bios设置

热门文章

  1. python对文件的操作模式_python对文件的操作
  2. Flink示例——Flink-CDC
  3. Pytorch实现基本循环神经网络RNN (3)
  4. Spark远程调试配置,在IDEA中的配置
  5. Storm通信机制,Worker进程间通信,Worker进程间通信分析,Worker进程间技术(Netty、ZeroMQ),Worker 内部通信技术(Disruptor)(来自学习资料)
  6. 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】PowerPC + Linux2.6.25平台下的SPI驱动架构分析
  7. matlab工具箱中draw_graph不能用的解决方案
  8. 数塔(hdoj 2084,动态规划递推)
  9. 微服务API模拟框架frock介绍
  10. JDK5.0新特性系列---11.4线程 Condition