zoukankan      html  css  js  c++  java
  • mysql数据向Redis快速导入

    Redis协议

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

    编写SQL语句,把mysql数据组合成Redis协议数据流

    SELECT CONCAT(
    "*16
    ",
    '$', LENGTH(redis_cmd), '
    ',redis_cmd, '
    ','$', LENGTH(redis_key), '
    ',redis_key, '
    ',
    '$', LENGTH(hkey1), '
    ',hkey1, '
    ','$', LENGTH(hval1), '
    ', hval1, '
    '
    '$', LENGTH(hkey2), '
    ',hkey2, '
    ','$', LENGTH(hval2), '
    ', hval2, '
    '
    '$', LENGTH(hkey3), '
    ',hkey3, '
    ','$', LENGTH(hval3), '
    ', hval3, '
    '
    '$', LENGTH(hkey4), '
    ',hkey4, '
    ','$', LENGTH(hval4), '
    ', hval4, '
    '
    '$', LENGTH(hkey5), '
    ',hkey5, '
    ','$', LENGTH(hval5), '
    ', hval5, '
    '
    '$', LENGTH(hkey6), '
    ',hkey6, '
    ','$', LENGTH(hval6), '
    ', hval6, '
    '
    '$', LENGTH(hkey7), '
    ',hkey7, '
    ','$', LENGTH(hval7), '
    ', hval7, '
    '
    )
    FROM (
     SELECT
    'HMSET' AS redis_cmd, CONCAT(resource_id,'_hash') AS redis_key,
    'name' AS hkey1,resource_title  AS hval1,
    'type' AS hkey2,resource_type_name AS hval2,
    'exe' AS hkey3,resource_format AS hval3,
    'page' AS hkey4,resource_page AS hval4,
    'size' AS hkey5,resource_size AS hval5,
    'time' AS hkey6,create_time AS hval6,
    'num' AS hkey7,resource_downcount AS hval7
     FROM t_resource_info
     ) AS t

    拼出来的串

    *16
    $5
    HMSET
    $9
    NBA231058
    $4
    name
    $51
    绿色食品的定义及绿色食品标志的使用
    $4
    type
    $6
    文本
    $3
    exe
    $3
    doc
    $4
    page
    $1
    1
    $4
    size
    $6
    79.5KB
    $4
    time
    $19
    2013-05-31 08:56:59
    $3
    num
    $2
    18
    

    执行下面的语句

    mysql -h 10.10.3.218 -uroot -p123456 -Dtest_db --skip-column-names --raw </usr/local/redis.sql |redis-cli --pipe

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

    单独执行

    echo -en '*3
    $3
    SET
    $3
    key
    $5
    value
    ' | redis-cli --pipe

     经测试200W条数据,2分钟以内就可以完成。

  • 相关阅读:
    WinForm窗体传值 总结
    SQLServer遍历数据库所有表及统计表数据总数
    GridView合并行代码
    日期转换成字符串
    flex与js交互浅析
    九,query task
    八,graphics
    十,Find and Identity
    转移批令
    db dw dd 和 dup
  • 原文地址:https://www.cnblogs.com/kgdxpr/p/3643672.html
Copyright © 2011-2022 走看看