1. 程式人生 > >Redis的管道(Pipeline)的一些看法

Redis的管道(Pipeline)的一些看法

最近病了,病的很厲害.人發燒了,頂著頭疼去了網易考拉進行二面.然後讓人給懟了,認識了兩位大佬加了微信,總算是沒有白去..澤州大佬告訴我,要學會思考,不要做程式碼機器…

回到家裡,癱在沙發上一動不想動..

之前博文中有講到Redis的一些使用方式和一些場景以及發生的一些問題.現在我總結一下Reids的PipeLine,也就是管道.

Redis的管道可以在大量資料需要一次性操作完成的時候,使用Pipeline進行批處理,將一大隊的操作合併成一次操作,可以減少鏈路層的時間消耗,畢竟頻繁操作是不好的嘛.

Redis有很多客戶端可供使用 我這裡以Jedis為例.做一個簡單的小測試,管道的效果一目瞭然.
先上一段程式碼:
直接操作Redis 10W讀寫

我使用Jedis客戶端 先在本地測試Redis 10W條資料的讀寫

測試結果:
直接操作結果
10W條資料本地操作耗時19694ms 將近20000毫秒..

現在我使用Pipeline 程式碼也相應改動一下:
PipeLine之後10W條資料讀寫
現在在程式碼當中通過Jedis.pipeline();獲取到一個pipeline物件,通過pipeline去操作Redis讀寫

測試結果:
PipeLine結果
結果僅僅使用了671ms

在本地執行的情況下效能差距就已經如此明顯,更何況是在網際網路專案當中,如果是頻繁的操作Redis,使用管道技術去進行操作是可取的.不僅減少伺服器壓力,還能減少鏈路層中的時間消耗,批量處理頻繁的操作,將大量操作結合成少量的操作..這是十分可取的.

PipeLine的強大已經是非常直觀的了,那麼具體的實現光靠猜是不行的,必須去閱讀對應的原始碼.