linux下mysql資料匯入到redis

2022-05-08 21:27:15 字數 2738 閱讀 3363

自redis 2.6以上版本起,redis支援快速大批量匯入資料,即pipe傳輸。通過將要匯入的命令轉換為resp格式,然後通過mysql的concat()來整理出最終匯入的命令集合,以達到快速匯入的目的。

1.建立測試表

create

table `order

` ( `orderid`

varchar(38) default

null

, `ordertime`

datetime

default

null

, `ordermoney`

decimal(20,0) default

null

, `orderstatus`

char(1) default

null

, `version`

int(11) default

null

) engine

=innodb default charset=utf8

2.插入資料

insert

into `order` values ('

1', '

2018-7-29 00:06:04

', 45, '

1', 1

);insert

into `order` values ('

2', '

2018-7-18 00:06:39

', 46, '

1', 2

);insert

into `order` values ('

3', '

2018-7-3 00:06:50

', 12, '

1', 1);

3.編寫查詢指令碼,並將該指令碼儲存成order.sql檔案

select

concat( '

*10\r\n

', -- *表示陣列,10表示陣列元素個數*,\r\n是規定分隔符,10這個數字根據下面紅底字段數量進行調整

'$', length(redis_cmd), '

\r\n

', redis_cmd, '

\r\n

', --$表示長字串,length(redis_cmd)表示字串長度,redis_cmd字串變數

'$', length(redis_key), '

\r\n

', redis_key, '

\r\n',

'$', length(hkey1),'

\r\n

',hkey1,'

\r\n

','$

',length(hval1),'

\r\n

',hval1,'

\r\n',

'$', length(hkey2),'

\r\n

',hkey2,'

\r\n

','$

',length(hval2),'

\r\n

',hval2,'

\r\n',

'$', length(hkey3),'

\r\n

',hkey3,'

\r\n

','$

',length(hval3),'

\r\n

',hval3,'

\r\n',

'$', length(hkey4),'

\r\n

',hkey4,'

\r\n

','$

',length(hval4),'

\r\n

',hval4,'\r'

)from(

select

'hset'as

redis_cmd,

concat(

'order:info:

',orderid) as

redis_key, '

ordertime'as

hkey1, ordertime as

hval1, '

ordermoney'as

hkey2, ordermoney as

hval2, '

orderstatus'as

hkey3, orderstatus as

hval3, '

version'as

hkey4, `version` as

hval4

from `order`)

as t

4.執行匯入命令

mysql -hhost-uroot -p123456 test --

default-character-set=utf8 --skip-column-names --raw < /usr/redis/order.sql | /usr/redis/redis-cli -h host -p 6379 -a 123456 --pipe

#-h host -uroot -p123456 test 分別為:mysql遠端位址,使用者名稱,密碼,資料庫名

#/usr/redis/order.sql | /usr/redis/redis-cli 分別為sql檔案和redis客戶端檔案目錄的位址

#-h host -p 6379 -a 123456 分別為redis遠端位址,埠,密碼

Linux 下MySQL資料匯入

linux 下mysql資料匯入 採用load命令實現資料匯入 load data infile d jp contentmark outputfile url log2010 05 04.log into table mytest fields terminated by t enclosed b...

linux 下mysql資料的匯入 匯出

匯出整個資料庫中的所有資料 1 在linux命令列下輸入 mysqldump u username p dabasename filename.sqlfilename.sql最好加上路徑名 匯出資料庫中的某個表的資料 mysqldump u username p dabasename tablena...

linux下mysql的資料匯入匯出

在linux命令列輸入 mysqldump u username p dabasename filename.sql filename.sql最好加上路徑名 二 匯出資料庫中某個表的資料 在linux命令列輸入 mysqldump u username p dabasename tablename ...