成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Mysql數(shù)據(jù)批量導入Redis

genefy / 1534人閱讀

摘要:將命令封裝成通信協(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

相關(guān)文章

  • PHP+Mysql高并發(fā)解決

    摘要:更多詳情,請看原文章批量插入性能優(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)...

    wuyangchun 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<