工作中有这样一个需求,要将用户的魅力值数据做排行,生成榜单展示前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结构中的更多相关文章

  1. MySQL 表数据的导入导出

    数据导出 1.  使用 SELECT ...INTO OUTFILE ...命令来导出数据,具体语法如下. mysql> SELECT * FROM tablename INTO OUTFILE ...

  2. mysql中把一个表的数据批量导入另一个表中

    mysql中把一个表的数据批量导入另一个表中   不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL或MS SQLServer某个表的数据批量导入到另一个表的情况,甚至有时还需要指定 ...

  3. .net core利用MySqlBulkLoader大数据批量导入MySQL

    最近用core写了一个数据迁移小工具,从SQLServer读取数据,加工后导入MySQL,由于数据量太过庞大,数据表都过百万,常用的dapper已经无法满足.三大数据库都有自己的大数据批量导入数据的方 ...

  4. mysql,oracle表数据相互导入

    mysql导入oracle: 例如mysql中有ts_user_info表,现在要导入到oracle中的user_info表 1:导出mysql表数据到data.txt文件 mysql> sel ...

  5. Java实现数据批量导入mysql数据库

    本文完全照搬别人的. 原文标题:Java实现数据批量导入数据库(优化速度-2种方法) 原文地址:https://blog.csdn.net/qy20115549/article/details/526 ...

  6. mysql 如何提高批量导入的速度

    mysql 如何提高批量导入的速度 最近一个项目测试,有几个mysql数据库的表数据记录达到了几十万条,在搭建测试环境 导入 测试数据时,十分慢.在网上搜索了一下,有下面一些方法可以加快mysql数据 ...

  7. Java实现Excel数据批量导入数据库

    Java实现Excel数据批量导入数据库 概述: 这个小工具类是工作中的一个小插曲哦,因为提数的时候需要跨数据库导数... 有的是需要从oracle导入mysql ,有的是从mysql导入oracle ...

  8. SQL Server中bcp命令的用法以及数据批量导入导出

    原文:SQL Server中bcp命令的用法以及数据批量导入导出 1.bcp命令参数解析 bcp命令有许多参数,下面给出bcp命令参数的简要解析 用法: bcp {dbtable | query} { ...

  9. [Django]数据批量导入

    前言:历经一个月的复习,考试终于结束了.这期间上班的时候有研究了Django网页制作过程中,如何将数据批量导入到数据库中. 这个过程真的是惨不忍睹,犯了很多的低级错误,这会在正文中说到的.再者导入数据 ...

随机推荐

  1. Vue.js 数据绑定语法详解

    Vue.js 数据绑定语法详解 一.总结 一句话总结:Vue.js 的模板是基于 DOM 实现的.这意味着所有的 Vue.js 模板都是可解析的有效的 HTML,且通过一些特殊的特性做了增强.Vue ...

  2. 2018-2019-2 20165332 《网络对抗技术》Exp4 恶意代码分析

    2018-2019-2 20165332 <网络对抗技术>Exp4 恶意代码分析 原理与实践说明 1.实践目标 监控你自己系统的运行状态,看有没有可疑的程序在运行. 分析一个恶意软件,就分 ...

  3. Android------Button 添加声音效果(两种方式)

    我在先前的案例<Android 的底部导航栏 BottomNavigationBar>中添加以底部 的4个按钮切换添加声音 下来看看案例效果图 使用添加依赖 compile 'com.as ...

  4. python字典格式化输出

    #!/usr/bin/env python#coding=utf-8#__author__='David Chung' dict1={'pid':1375,'type':'cpu','resource ...

  5. SVN 提交代码时强制加入注释内容

    参考: 关于SVN提交强制加入注释 方式一是使用的服务器脚本,对所有SVN用户生效. 方式二是使用本地钩子,仅对当前SVN用户生效.

  6. HQL查询语句中的模糊查询

    From Person this Where this.name like '%abc%' @SuppressWarnings("unchecked") @Override pub ...

  7. 第一个mpvue小程序开发总结

    前言 说起小程序,其实在去年我都还只试着照着官方文档写过demo的,不过现在这家公司小程序做得比较多,我来之后也参与了几个小程序的开发了,最开始那几个是用的wepy,最近一个开始转用mpvue开发,最 ...

  8. zookeeper的安装和部署

    参考: https://testerhome.com/topics/11361 http://blog.csdn.net/lihao21/article/details/51778255 https: ...

  9. 020PHP基础知识——函数(三)

    <?php /** * 任何数量的参数: * func_get_args() 接收一个数组,数组里面包含所有参数 * func_num_args() 取得共有几个参数 * func_get_ar ...

  10. [转]设置银行卡密码的个人bug

    国庆前去某银行新办了张银行卡,办卡的时候修改了默认的密码.国庆期间要网上购物,结果密码输入3次都错误,所以银行卡被锁定了,只能等国庆后银行上班再去解锁. 国庆结束后跑去银行重置了密码,流程是这样的:1 ...