快速實現MySQL資料庫遷移到Redis以hash方式存儲

一個簡單快速的將MySQL的數據遷移到Redis中並且以hash方式存儲,數據的存儲需要遵守redis的通訊協議 

如:

*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

重要參數說明:

–raw: 使mysql不轉換字段值中的換行符。

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

You May Also Like