av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

SpringBoot項(xiàng)目中Redis之管道技術(shù)

環(huán)境:springboot2.3.9.RELEASE + redis3.2.100

Redis是一種基于客戶端-服務(wù)端模型以及請(qǐng)求/響應(yīng)協(xié)議的TCP服務(wù)。這意味著通常情況下一個(gè)請(qǐng)求會(huì)遵循以下步驟:

  • 客戶端向服務(wù)端發(fā)送一個(gè)查詢請(qǐng)求,并監(jiān)聽(tīng)Socket返回,通常是以阻塞模式,等待服務(wù)端響應(yīng)。
  • 服務(wù)端處理命令,并將結(jié)果返回給客戶端。

Redis 管道技術(shù)

Redis 管道技術(shù)可以在服務(wù)端未響應(yīng)時(shí),客戶端可以繼續(xù)向服務(wù)端發(fā)送請(qǐng)求,并最終一次性讀取所有服務(wù)端的響應(yīng)。

Redis普通請(qǐng)求模型與管道請(qǐng)求模型對(duì)比

(普通請(qǐng)求模型)來(lái)源網(wǎng)絡(luò)

RTT(Round-Trip Time),就是往返時(shí)延,在計(jì)算機(jī)網(wǎng)絡(luò)中它是一個(gè)重要的性能指標(biāo),表示從發(fā)送端發(fā)送數(shù)據(jù)開(kāi)始,到發(fā)送端收到來(lái)自接收端的確認(rèn)(接收端收到數(shù)據(jù)后便立即發(fā)送確認(rèn)),總共經(jīng)歷的時(shí)延。

一般認(rèn)為,單向時(shí)延 = 傳輸時(shí)延t1 + 傳播時(shí)延t2 + 排隊(duì)時(shí)延t3

(管道請(qǐng)求模型)來(lái)源網(wǎng)絡(luò)

性能對(duì)比

依賴

 
 
 
 
  1.             org.springframework.boot
  2.             spring-boot-starter-data-redis
  3.         
  4.         
  5.             org.apache.commons
  6.             commons-pool2

配置文件

 
 
 
 
  1. spring:
  2.   redis:
  3.     host: localhost
  4.     port: 6379
  5.     password: ******
  6.     database: 4
  7.     lettuce:
  8.       pool:
  9.         maxActive: 8
  10.         maxIdle: 100
  11.         minIdle: 10
  12.         maxWait: -1

普通方法

 
 
 
 
  1. @Resource
  2. private StringRedisTemplate stringRedisTemplate ;
  3. public void execNormal() {
  4.         long start = System.currentTimeMillis() ;
  5.         for (int i = 0; i < 100_000; i++) {
  6.             stringRedisTemplate.opsForValue().set("k" + i, "v" + i) ;
  7.         }
  8.         System.out.println("耗時(shí):" + (System.currentTimeMillis() - start) + " ms") ;
  9. }

測(cè)試結(jié)果

總耗時(shí):47秒左右

管道技術(shù)

 
 
 
 
  1. public void execPipeline() {
  2.         long start = System.currentTimeMillis() ;
  3.         stringRedisTemplate.executePipelined(new RedisCallback() {
  4.             @Override
  5.             public Object doInRedis(RedisConnection connection) throws DataAccessException {
  6.                 for (int i = 0; i < 100_000; i++) {
  7.                     connection.set(("pk" + i).getBytes(), ("pv" + i).getBytes()) ;
  8.                 }
  9.                 return null ;
  10.             }
  11.         }) ;
  12.         System.out.println("耗時(shí):" + (System.currentTimeMillis() - start) + " ms") ;
  13. }
  14. 測(cè)試結(jié)果

    耗時(shí):13秒左右

    性能提升了3倍多。

    完畢?。?!


    分享文章:SpringBoot項(xiàng)目中Redis之管道技術(shù)
    鏈接分享:http://uogjgqi.cn/article/ccdiopj.html
    掃二維碼與項(xiàng)目經(jīng)理溝通

    我們?cè)谖⑿派?4小時(shí)期待你的聲音

    解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流