摘要:將命令封裝成通信協(xié)議定義的數(shù)據(jù)格式,批量發(fā)送給執(zhí)行執(zhí)行命令后,如果出現(xiàn)類似以下提示,這說明導入正確可以打開輸入或者命令來進行查詢。
為了提高系統(tǒng)性能,在很多系統(tǒng)中使用Redis作為緩存數(shù)據(jù)庫,那么在系統(tǒng)啟動或重啟后,希望把DB的數(shù)據(jù)初始化到Redis以提高系統(tǒng)的性能,應該如何批量導入大量的數(shù)據(jù)呢?
要導入數(shù)據(jù),就要先了解Redis的協(xié)議(RESP),然后用sql拼接數(shù)據(jù)交給redis導入,RESP格式如下:
*n (*表示數(shù)組,按$劃分) $n (表示參數(shù)長度) cmd (表示命令) $n (表示參數(shù)長度) field (表示字段) $n (表示參數(shù)長度) value (表示值) ...
我們拼個簡單的數(shù)據(jù),如下:
*4 $5 HMSET $8 person:1 $2 id $1 1
上面表示有4組,5表示HMSET的長度,8表示person:1長度。。。
命令:HMSET person:1 id 1
下面我們再寫下sql,如下:
SELECT CONCAT( "*8 ", "$", LENGTH(redis_cmd), " ", redis_cmd, " ", "$", LENGTH(hash), " ", hash, " ", "$", LENGTH(hkey0), " ", hkey0, " ", "$", LENGTH(hval0), " ", hval0, " ", "$", LENGTH(hkey1), " ", hkey1, " ", "$", LENGTH(hval1), " ", hval1, " ", "$", LENGTH(hkey2), " ", hkey2, " ", "$", LENGTH(hval2), " ", hval2, "" ) FROM ( SELECT "HMSET" AS redis_cmd, concat("hash:", id) AS hash, "id" AS hkey0, id AS hval0, "age" AS hkey1, age AS hval1, "name" AS hkey2, name AS hval2 FROM mytable ) AS t;
注意:換行符 windows使用 ,linux使用
上面的sql可以組裝redis需要的數(shù)據(jù),下面我們編寫導入命令:
mysql -uroot -proot -Dxfdb --default-character-set=utf8 --skip-column-names --raw < mysql_to_redis.sql | redis-cli -h 127.0.0.1 --pipe
--raw: 使mysql不轉(zhuǎn)換字段值中的換行符。
--skip-column-names: 使mysql輸出的每行中不包含列名。
--pipe 將命令封裝成redis通信協(xié)議定義的數(shù)據(jù)格式,批量發(fā)送給redis執(zhí)行
執(zhí)行命令后,如果出現(xiàn)類似以下提示,這說明導入正確:
All data transferred. Waiting for the last reply... Last reply received from server. errors: 0, replies: 3
可以打開 Redis-cli 輸入dbsize或者keys *命令來進行查詢。
學習交流,請加群:64691032
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/77042.html
摘要:更多詳情,請看原文章批量插入性能優(yōu)化相關(guān)文章高并發(fā)簡單解決方案隊列緩存批量入庫離線整合秒殺活動設計方案 在項目中,經(jīng)常都會遇到高并發(fā)問題,如在某個時間點有100個人對同一數(shù)據(jù)進行更改,這樣就會產(chǎn)生問題,最后導致的數(shù)據(jù)會不準確,通常的解決高并發(fā)的方法有讀取數(shù)據(jù)時加緩存,寫入數(shù)據(jù)時添加到隊列,下面羅列一些處理高并發(fā)的常見方法供大家參考。 一、MySQL批量插入優(yōu)化 對于一些數(shù)據(jù)量較大的系統(tǒng)...
閱讀 2962·2021-11-25 09:43
閱讀 3339·2021-11-24 09:39
閱讀 2850·2021-09-22 15:59
閱讀 2235·2021-09-13 10:24
閱讀 521·2019-08-29 17:02
閱讀 2113·2019-08-29 13:23
閱讀 3073·2019-08-29 13:06
閱讀 3556·2019-08-29 13:04