日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
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)聽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)求模型)來源網(wǎng)絡(luò)

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

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

(管道請(qǐng)求模型)來源網(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倍多。

    完畢?。。?/p>
    網(wǎng)頁標(biāo)題:SpringBoot項(xiàng)目中Redis之管道技術(shù)
    當(dāng)前網(wǎng)址:http://m.5511xx.com/article/ccdiopj.html