redis-cli pipe方式導入mysql sql查詢導出redisProtocol格式數據
mysql的數據導入到redis中可以通過編寫腳本來實現,先連接db然後將查詢出的數據批量寫入到redis中,但redis pipe的方式更加簡便高效。
分享下最代碼的相關腳本代碼片段:
linux下直接執行
1
mysql -uroot -p111111 javaniu --skip-column-names --default-character-set=utf8 --raw < eve_uid_tp_scid_st_t.tpl| redis-cli -p 6379 --pipe
windows下
1
mysql -uroot -p111111 javaniu --skip-column-names --default-character-set=utf8 --raw < c:/eve_uid_tp_scid_st_t.tpl | redis-cli -p 6379 --pipe
linux下導出文件分隔符是
,而windows下是
linux下腳本
01
SELECT CONCAT(
02
"*4
",
03
"$", LENGTH(redis_cmd), "
",
04
redis_cmd, "
",
05
"$", LENGTH(eve_st), "
",
06
eve_st, "
",
07
"$", LENGTH(score), "
",
08
score, "
",
09
"$", LENGTH(member), "
",
10
member, "
"
11
)
12
FROM (
13
SELECT
14
"zadd" as redis_cmd,
15
concat("eve_",status) as eve_st,
16
id as member,
17
unix_timestamp(create_time) AS score
18
FROM event where status=0
19
) AS eve
windows下腳本
01
SELECT CONCAT(
02
"*4
",
03
"$", LENGTH(redis_cmd), "
",
04
redis_cmd, "
",
05
"$", LENGTH(eve_st), "
",
06
eve_st, "
",
07
"$", LENGTH(score), "
",
08
score, "
",
09
"$", LENGTH(member), "
",
10
member
11
)
12
FROM (
13
SELECT
14
"zadd" as redis_cmd,
15
concat("eve_",status) as eve_st,
16
id as member,
17
unix_timestamp(create_time) AS score
18
FROM event where status=0
19
) AS eve
redis Protocol格式說明如下:
01
#表示有4個參數
02
*4
03
#表示命令長度
04
$LENGTH(redis_cmd)
05
#命令
06
redis_cmd
07
#key長度
08
$LENGTH(eve_st)
09
#key值
10
eve_st
11
#value長度
12
$LENGTH(score)
13
#value值
14
score
執行結果如下圖:
※OpenCV VideoCapture.get()參數詳解
※win32截屏並rgb24轉yuv420
TAG:程序員小新人學習 |