您的位置:首页 > 数据库 > Redis

利用管道完成数据从MySQL到Redis的高效迁移

2013-12-11 19:52 639 查看
Mysql到Redis数据的迁移,可以使用“管道输出”的方式把mysql命令行产生的迁移数据内容转换为Redis可识别的格式直接传递给redis-cli,redis-cli命令行工具有一个批量插入模式,是专门为批量执行命令设计的。关键就是把Mysql查询的内容格式化成redis-cli可用的数据格式。

准备在每行数据中执行的redis命令如下:

HSET stock [id] [CONCAT(t.sku_code, ':', t.tax_cost_price, ':', t.wh_name)]

按照以上redis命令规则,创建一个events_to_redis.sql文件,内容是用来生成redis数据协议格式的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(hkey), '\r\n',
hkey, '\r\n',
'$', LENGTH(hval), '\r\n',
hval, '\r'
)
FROM
(
SELECT
'HSET'            AS redis_cmd,
'stock' AS redis_key,
t.id              AS hkey,
CONCAT(t.sku_code, ':', t.tax_cost_price, ':', t.wh_name)        AS hval
FROM erp_purchasemanager_stock t
) AS t




命令执行:

mysql stats_db --skip-column-names --raw < events_to_redis.sql | redis-cli --pipe
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: