自redis 2.6以上版本起,redis支援快速大批量匯入資料,即pipe傳輸。通過將要匯入的命令轉換為resp格式,然後通過mysql的concat()來整理出最終匯入的命令集合,以達到快速匯入的目的。
1.建立測試表
createtable `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.插入資料
insertinto `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檔案
selectconcat( '
*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 ...