Mysql到Redis的数据协议(可以按照写redis的协议,自测已经成功,key值可以自己变化,不一定非要是id)
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)相关推荐
- python读取redis存储数据的存储时间_Python读写Redis数据库操作示例
使用Python如何操作Redis呢?下面用实例来说明用Python读写Redis数据库. 比如,我们插入一条数据,如下: import redis class Database: def __ini ...
- redis setnx 分布式锁_手写Redis分布式锁
分布式锁使用场景 现在的系统都是集群部署,每个服务都不是单节点的了.比如库存服务,可能部署到3台机器上分别命名为节点1,节点2,节点3.库存服务需要扣减库存,扣减库存肯定需要锁吧,如果使用Lock或者 ...
- go mysql id为0_go 语言中mysql操作200万数据时应该如何写?
在写一个将 discuzx 的 post 数据的 bbcode 转换成 html 的功能. 但是转换过程中,越到后面,越卡了. 本来想学学并发的,无奈不会啊...太菜了. 注释掉的是想要弄的... 求 ...
- redis集合数据过期_如何从Redis中的集合中自动删除过期的密钥?
我在Redis数据库中有4个密钥.这些密钥从现在开始到期10秒.我已将密钥添加到集合中.当密钥过期时,它们实际上不在数据库中(获取返回空值).但是,键仍然是该组的成员.该集合将继续存在,直到从集合中删 ...
- Linux企业化运维--(7)redis服务之redis配置及主从复制、主从自动切换、集群、redis+mysql、gearman实现数据同步
Linux企业化运维 实验所用系统为Redhat-rhel7.6. 目录 Linux企业化运维 Linux企业化运维--(7)redis服务之redis配置及主从复制.主从自动切换.集群.redis+ ...
- Redis概述_使用命令对redis的数据进行增删改查_Jedis连接redis进行数据操作_redis进行数据缓存案例
学习目标 redis 概念 下载安装 命令操作 1. 数据结构 持久化操作 使用Java客户端操作redis Redis 前言(从百度上抄的, 看看了解一下, 懒得排版了) 1. 概念: redis是 ...
- redis php数据插入失败,redis插入数据,恢复数据测试(禁止淘汰策略下恢复大于redis内存限制数据情况)...
环境准备: redis php的redis扩展 redis version=4.0.8 php version: php version.png php redis extension: php re ...
- 基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据
基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据 转载于:https://github.com/Meowv/Blog 在日志记录中使用的静态方法有人指出写法不 ...
- 【MySQL】对JSON数据操作(全网最全)
[MySQL]对JSON数据操作(全网最全) 总所周知,mysql5.7以上提供了一种新的字段格式-json,大概是mysql想把非关系型和关系型数据库一口通吃,所以推出了这种非常好用的格式,这样,我 ...
最新文章
- 自然语言处理(NLP)之从文本中提取时间
- 【教程】Linux下MySQL 8.0安装配置
- java中执行js代码
- 小学教师计算机国培培训总结,小学教师国培培训心得体会
- 计算机拼图形 比创意教案,拼图形比创意教学设计.doc
- vue.js语法和常用指令
- linux如何查看jmx参数,linux下利用JMX监控Tomcat
- final、static、finally总结
- 计算机网络 chapter3数据链路层
- java 名称可以包含-吗_java – 验证失败时包含参数名称的自定义...
- 360手柄摇杆漂移修复_「超逸酷玩」电脑游戏还用在用键盘?不妨试试斯巴达2手柄无线版...
- 计算机科学的endnote格式,基于国家标准的 EndNote 输出样式模板
- 百度网盘获取下载链接
- 【使用最新版本的cef,编译libcef_dll_wrapper】
- Spring Security完成安全认证
- 算法复杂度和合并果子题解
- [Unity3D]Unity3D游戏开发之自由视角下的角色控制
- [白话解析] 通俗解析集成学习之GBDT
- 反复踩坑的ceres安装-----ubuntu18.04
- 惠普计算机怎样添加程序,小编教你惠普电脑如何进入bios设置
热门文章
- python对文件的操作模式_python对文件的操作
- Flink示例——Flink-CDC
- Pytorch实现基本循环神经网络RNN (3)
- Spark远程调试配置,在IDEA中的配置
- Storm通信机制,Worker进程间通信,Worker进程间通信分析,Worker进程间技术(Netty、ZeroMQ),Worker 内部通信技术(Disruptor)(来自学习资料)
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】PowerPC + Linux2.6.25平台下的SPI驱动架构分析
- matlab工具箱中draw_graph不能用的解决方案
- 数塔(hdoj 2084,动态规划递推)
- 微服务API模拟框架frock介绍
- JDK5.0新特性系列---11.4线程 Condition