Jedis管道使用

java客戶端與redis服務器之間使用tcp協議進行通信,客戶端向服務器每發送一條語句,就會阻塞等待結果,如果有多條命令,那麼這個發送語句和等待結果的時間就比較長了。管道的作用就是將這多條語句打包一起發送給服務器,這樣,無論有多少條語句,都只需要一次發送,一次等待的時間就可以了。先看代碼。

Jedis jedis = new Jedis("192.168.229.128", 6379); 
// 開啓管道
Pipeline pipelined = jedis.pipelined();
for(int i = 0; i < 100000; i++){
	pipelined.set(i + "", i + "");
}
// 提交命令
pipelined.sync();

可以看出,使用redis.clients.jedis.Pipeline的一個實例化的對象代替了redis.clients.jedis.Jedis,使用sync()方法發送語句並等待語句執行結果。

使用管道需要注意以下幾點:

1. 每條命令都不能依賴於之前命令的執行結果

2. 如果中間某條命令執行失敗,不影響之後命令的執行

3. 管道中的每條命令執行期間,可以有其他線程的命令插隊執行,這點與redis的事物不一樣

4.  由於redis需要處理完所有命令之後再返回客戶端結果,因此在這之前,需要在內存中緩存已處理完命令的結果,所以並不是打包的命令越多越好

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章