unijun 发表于 2018-10-3 06:37:51

快速实现MySQL迁移到Redis-DBAspace

  一个简单快速的将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 ACTIONCOUNT   ##这里设置的键值方面于数据库对应起来
  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
页: [1]
查看完整版本: 快速实现MySQL迁移到Redis-DBAspace