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分钟以内就可以完成。

  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/kgdxpr/p/3643672.html
Copyright © 2011-2022 走看看