redis裡的「流水線」pipeline pool

2021-10-02 15:31:58 字數 1663 閱讀 4593

pipeline 流水線

定義:批量執行redis命令,減少通訊io,提高執行效率

注意:此為客戶端技術,而不是服務端技術

示例

import redis

# 建立連線池並連線到redis

pool = redis.connectionpool(host =

'127.0.0.1'

,db=

0,port=

6379

)r = redis.redis(connection_pool=pool)

pipe = r.pipeline(

)pipe.

set(

'fans',50

)pipe.incr(

'fans'

)pipe.incrby(

'fans'

,100

)pipe.execute(

)

效能對比

# 建立連線池並連線到redis

pool = redis.connectionpool(host =

'127.0.0.1'

,db=

0,port=

6379

)r = redis.redis(connection_pool=pool)

defwithpipeline

(r):

p = r.pipeline(

)for i in

range

(1000):

key =

'test1'

+str

(i) value = i+

1 p.

set(key, value)

p.execute(

)def

withoutpipeline

(r):

for i in

range

(1000):

key =

'test2'

+str

(i) value = i+

1 r.

set(key, value)

if __name__ ==

'__main__'

: t1 = time.time(

)# time is: 0.07772541046142578

# withpipeline(r)

# time is: 0.2035658359527588

withoutpipeline(r)

t2 = time.time(

)print

('time is:'

, t2-t1)

可見,pipeline可以大幅提高redis的效率

python 操作 redis事務

with r.pipeline(transaction=true)

as pipe

pipe.multi(

) pipe.incr(

"books"

) pipe.incr(

"books"

) values = pipe.execute(

)

流水線排程

n個作業要在由2臺機器m1和m2組成的流水線上完成加工。每個作業加工的順序都是先在m1上加工,然後在m2上加工。m1和m2加工作業i所需的時間分別為a i 和b i 你可以安排每個作業的執行順序,使得從第乙個作業在機器m1上開始加工,到最後乙個作業在機器m2上加工完成所需的時間最少。求這個最少的時間...

流水線冒險

流水線冒險 回顧一下常用五階段流水線 f 取指 d 解碼 e 執行 m 訪存 w 寫回 注意 對暫存器檔案的寫只有在時鐘上公升的時候才會更新!資料冒險的原因 對暫存器檔案的讀寫是在不同階段進行的 1.用暫停來避免資料冒險 暫停時,處理器會停止流水線中一條或多條指令,直到冒險條件不再滿足。在本該正常處...

渲染流水線

應用階段 cpu準備資料,skinmeshrender,meshfilter,meshrender 頂點資料,三角形資料,法線資料,切線資料,渲染設定指令,紋理資料,uv資料 由cpu傳送給gpu,即一次drawcall 幾何階段 頂點變換,計算頂點顏色 如逐頂點光照 齊次裁剪空間,透視除法,歸一化...