新聞中心

創(chuàng)新互聯(lián)客戶idc服務(wù)中心,提供綿陽(yáng)機(jī)房托管、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。
注意:你需要在 Liunx 系統(tǒng)上使用 Pipeline 管道技術(shù)。
為什么需要Pipeline
Redis 是使用了客戶端-服務(wù)器(C/S)模型和
請(qǐng)求/響應(yīng)協(xié)議的 TCP 服務(wù)器。這意味著發(fā)送一個(gè)請(qǐng)求會(huì)遵循以下步驟:
- 客戶端通常以阻塞的方式向服務(wù)器發(fā)送命令,以獲取服務(wù)器的響應(yīng)。
- 服務(wù)器接收并處理命令,然后將響應(yīng)發(fā)送回客戶端。
所謂阻塞式,指的是只有當(dāng)客戶端接收完當(dāng)前命令的響應(yīng)信息,服務(wù)端才可以繼續(xù)處理下一條指令,即一條一條的逐次執(zhí)行。
不管命令是以數(shù)據(jù)包的形式從客戶端傳輸?shù)椒?wù)端,還是客戶端獲得服務(wù)端的響應(yīng)信息,這個(gè)過程都需要花費(fèi)一定的時(shí)間,我把這個(gè)時(shí)間稱為“往返延時(shí)”。因此當(dāng)客戶端執(zhí)行一串請(qǐng)求的時(shí)候很容易看出延時(shí)對(duì)其性能造成的影響。
如果我們可以減少網(wǎng)絡(luò)請(qǐng)求的次數(shù),那么就可以大幅度提高 Redis 應(yīng)用性能。Redis 的 Pipeline 就是這樣一種技術(shù),它能夠把多次網(wǎng)絡(luò)請(qǐng)求打包成一次請(qǐng)求發(fā)送給服務(wù)端,從而減少多次請(qǐng)求的“往返時(shí)間”。
注意,記住“速度不夠,管道來湊”這句話,能夠幫助你牢記管道技術(shù)的作用。
執(zhí)行Pipeline語(yǔ)句
Pipeline 技術(shù)有其固定的語(yǔ)法格式,以下是在 Linux 終端執(zhí)行的語(yǔ)句,具體命令如下:
(echo -en "PING\r\n SET name www.biancheng\r\n GET name\r\n INCR num\r\n INCR num\r\n INCR num\r\n"; sleep 2)|nc localhost 6379
上述語(yǔ)句,首先使用 PING 命令檢查 Redis 是否正常工作,然后又分別使用了 SET/GET/INCR 命令,以及 sleep 阻塞 2 秒,最后將這些命令一次性的提交給 Redis 服務(wù)器,Redis 服務(wù)器在阻塞了 2 秒之后,一次性輸出了所有命令的響應(yīng)信息。
注意: 每個(gè)命令字符串必須以 \r\n 結(jié)尾。至于語(yǔ)句最后的 nc localhost 6379 是固定格式無需更改。
客戶端一次性接收到所有命令的執(zhí)行結(jié)果,如下所示:
$(echo -en "PING\r\n SET name www.biancheng\r\n GET name\r\n INCR num\r\n INCR num\r\n INCR num\r\n"; sleep 2)|nc localhost 6379 +PONG +OK www.bianchneg.net :1 :2 :3
注意:上述示例需要在 Linux 系統(tǒng)執(zhí)行,Windows 由于缺少
nc命令,無法執(zhí)行成功。
分享名稱:RedisPipeline管道技術(shù)
網(wǎng)頁(yè)鏈接:http://fisionsoft.com.cn/article/coiieje.html


咨詢
建站咨詢
