快速实现MySQL迁移到Redis

    一个简单快速的将MySQL的数据迁移到Redis中并且以hash方式存储,数据的存储需要遵守redis的通讯协议(官方连接 http://redis.io/topics/mass-insert),

如:

    *3 CR LF  //三个字段

    $3 CR LF  //第一个字段 ‘set’ 有3个字节

    SET CR LF //字段内容set

    $4 CR LF  //第二个字段key1有4个字节

    key1 CR LF //字段二内容 mykey

    $4 CR LF  //第三个字段有4个字节

    val1 CR LF //字段三内容 val1

    结果:set key1 val1


案例如下:

    CREATE TABLE events_all_time (

     id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,

     ACTION VARCHAR(255) NOT NULL,

     COUNT INT(11) NOT NULL DEFAULT 0,

     PRIMARY KEY (id),

     UNIQUE KEY uniq_action (ACTION)

    );

    ##数据自己添加到表

Redis存储结构:

1、hset events_all_time ACTION  COUNT   ##这里设置的键值方面于数据库对应起来

        2、编写变量保存到文件里abc.sql

    

    SELECT CONCAT(

      "*4\r\n",                           ###表示redis命令有4个字段包括命令和参数(表字段)

      '$', LENGTH(redis_cmd), '\r\n',     

      redis_cmd, '\r\n',

      '$', LENGTH(redis_key), '\r\n',

      redis_key, '\r\n',

      '$', LENGTH(hkey), '\r\n',

      hkey, '\r\n',

      '$', LENGTH(hval), '\r\n',

      hval, '\r' ###最后一行没有\n

    )

    FROM (

      SELECT

      'HSET' as redis_cmd,

      'events_all_time' AS redis_key,   ##这里用表名作为redis中的field名

      action AS hkey, ##数据库字段

      count AS hval

      FROM events_all_time

    ) AS t

    

    3、执行: /usr/local/mysql/bin/mysql -h192.168.1.195 -udlan -p log --skip-column-names --raw <abc.sql |redis-cli -h 192.168.1.130 --pipe

重要参数说明:

--raw: 使mysql不转换字段值中的换行符。 

--skip-column-names: 使mysql输出的每行中不包含列名


本文转自 DBAspace 51CTO博客,原文链接:http://blog.51cto.com/dbaspace/1982357


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值