将mysql表数据批量导入redis zset结构中
工作中有这样一个需求,要将用户的魅力值数据做排行,生成榜单展示前40名,每隔5分钟刷新一次榜单。这样的需求用redis的zset是很方便实现的。但是数据存在mysql的表中,有400多万条,怎么将其快速的放入redis中呢?
一般我们想到是通过程序把数据从mysql中查出来,然后存入redis,但是这样不仅耗时,而且不能保证写入redis的数据的准确性,这中间存在一个部署的时差。通过google老师一查原来redis提供了批量导入数据的功能,原帖地址:
http://baijian.github.io/2013/10/12/import-data-from-mysql-to-redis.html
下面贴出脚本和我的一些理解:
mysql -h192.168.2.3 -uskst -p'password' nyx --skip-column-names --raw < data.sql |/usr/local/redis/bin/redis-cli -h 192.168.2.128 -p 6479 --pipe
前提:在一台装有mysql服务和redis服务的linux环境下
mysql -h"源数据库ip" -u"用户名" -p"密码" 数据库名 --skip-column-names --raw < data.sql(后面给出)|/usr/local/redis/bin/redis-cli -h "目标redis的ip"
-p "目标redis端口" --pipe
以上脚本很好理解,下面给出data.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(redis_increment),'\r\n',redis_increment,'\r\n',
'$',LENGTH(redis_member),'\r\n',redis_member,'\r'
) FROM (
SELECT 'ZADD' as redis_cmd,
'charmRank:forever:2015-07-14 00:00:00_2050-12-30 23:59:59' as redis_key,
charm as redis_increment,
accountId as redis_member
FROM table_name
) AS name
这个脚本中:开头4是指该redis命令有几个部分,比如我的zadd key score member命令有4部分, 如果是 ZSCORE key member 那么就是3,其他部分应该都好懂。
整个命令执行下来400多万数据不到1分钟跑完了,很快而且准确。
将mysql表数据批量导入redis zset结构中的更多相关文章
- MySQL 表数据的导入导出
数据导出 1. 使用 SELECT ...INTO OUTFILE ...命令来导出数据,具体语法如下. mysql> SELECT * FROM tablename INTO OUTFILE ...
- mysql中把一个表的数据批量导入另一个表中
mysql中把一个表的数据批量导入另一个表中 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...
- .net core利用MySqlBulkLoader大数据批量导入MySQL
最近用core写了一个数据迁移小工具,从SQLServer读取数据,加工后导入MySQL,由于数据量太过庞大,数据表都过百万,常用的dapper已经无法满足.三大数据库都有自己的大数据批量导入数据的方 ...
- mysql,oracle表数据相互导入
mysql导入oracle: 例如mysql中有ts_user_info表,现在要导入到oracle中的user_info表 1:导出mysql表数据到data.txt文件 mysql> sel ...
- Java实现数据批量导入mysql数据库
本文完全照搬别人的. 原文标题:Java实现数据批量导入数据库(优化速度-2种方法) 原文地址:https://blog.csdn.net/qy20115549/article/details/526 ...
- mysql 如何提高批量导入的速度
mysql 如何提高批量导入的速度 最近一个项目测试,有几个mysql数据库的表数据记录达到了几十万条,在搭建测试环境 导入 测试数据时,十分慢.在网上搜索了一下,有下面一些方法可以加快mysql数据 ...
- Java实现Excel数据批量导入数据库
Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...
- SQL Server中bcp命令的用法以及数据批量导入导出
原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...
- [Django]数据批量导入
前言:历经一个月的复习,考试终于结束了.这期间上班的时候有研究了Django网页制作过程中,如何将数据批量导入到数据库中. 这个过程真的是惨不忍睹,犯了很多的低级错误,这会在正文中说到的.再者导入数据 ...
随机推荐
- Vue.js 数据绑定语法详解
Vue.js 数据绑定语法详解 一.总结 一句话总结:Vue.js 的模板是基于 DOM 实现的.这意味着所有的 Vue.js 模板都是可解析的有效的 HTML,且通过一些特殊的特性做了增强.Vue ...
- 2018-2019-2 20165332 《网络对抗技术》Exp4 恶意代码分析
2018-2019-2 20165332 <网络对抗技术>Exp4 恶意代码分析 原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分 ...
- Android------Button 添加声音效果(两种方式)
我在先前的案例<Android 的底部导航栏 BottomNavigationBar>中添加以底部 的4个按钮切换添加声音 下来看看案例效果图 使用添加依赖 compile 'com.as ...
- python字典格式化输出
#!/usr/bin/env python#coding=utf-8#__author__='David Chung' dict1={'pid':1375,'type':'cpu','resource ...
- SVN 提交代码时强制加入注释内容
参考: 关于SVN提交强制加入注释 方式一是使用的服务器脚本,对所有SVN用户生效. 方式二是使用本地钩子,仅对当前SVN用户生效.
- HQL查询语句中的模糊查询
From Person this Where this.name like '%abc%' @SuppressWarnings("unchecked") @Override pub ...
- 第一个mpvue小程序开发总结
前言 说起小程序,其实在去年我都还只试着照着官方文档写过demo的,不过现在这家公司小程序做得比较多,我来之后也参与了几个小程序的开发了,最开始那几个是用的wepy,最近一个开始转用mpvue开发,最 ...
- zookeeper的安装和部署
参考: https://testerhome.com/topics/11361 http://blog.csdn.net/lihao21/article/details/51778255 https: ...
- 020PHP基础知识——函数(三)
<?php /** * 任何数量的参数: * func_get_args() 接收一个数组,数组里面包含所有参数 * func_num_args() 取得共有几个参数 * func_get_ar ...
- [转]设置银行卡密码的个人bug
国庆前去某银行新办了张银行卡,办卡的时候修改了默认的密码.国庆期间要网上购物,结果密码输入3次都错误,所以银行卡被锁定了,只能等国庆后银行上班再去解锁. 国庆结束后跑去银行重置了密码,流程是这样的:1 ...