新聞中心

創(chuàng)新互聯(lián)客戶(hù)idc服務(wù)中心,提供綿陽(yáng)機(jī)房托管、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過(guò)各地的服務(wù)中心,我們向成都用戶(hù)提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開(kāi)放、透明、穩(wěn)定、高性?xún)r(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。
注意:你需要在 Liunx 系統(tǒng)上使用 Pipeline 管道技術(shù)。
為什么需要Pipeline
Redis 是使用了客戶(hù)端-服務(wù)器(C/S)模型和
請(qǐng)求/響應(yīng)協(xié)議的 TCP 服務(wù)器。這意味著發(fā)送一個(gè)請(qǐng)求會(huì)遵循以下步驟:
- 客戶(hù)端通常以阻塞的方式向服務(wù)器發(fā)送命令,以獲取服務(wù)器的響應(yīng)。
- 服務(wù)器接收并處理命令,然后將響應(yīng)發(fā)送回客戶(hù)端。
所謂阻塞式,指的是只有當(dāng)客戶(hù)端接收完當(dāng)前命令的響應(yīng)信息,服務(wù)端才可以繼續(xù)處理下一條指令,即一條一條的逐次執(zhí)行。
不管命令是以數(shù)據(jù)包的形式從客戶(hù)端傳輸?shù)椒?wù)端,還是客戶(hù)端獲得服務(wù)端的響應(yīng)信息,這個(gè)過(guò)程都需要花費(fèi)一定的時(shí)間,我把這個(gè)時(shí)間稱(chēng)為“往返延時(shí)”。因此當(dāng)客戶(hù)端執(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í)間”。
注意,記住“速度不夠,管道來(lái)湊”這句話,能夠幫助你牢記管道技術(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 是固定格式無(wú)需更改。
客戶(hù)端一次性接收到所有命令的執(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命令,無(wú)法執(zhí)行成功。
標(biāo)題名稱(chēng):RedisPipeline管道技術(shù)
新聞來(lái)源:http://www.dlmjj.cn/article/coiieje.html


咨詢(xún)
建站咨詢(xún)
