023 pipeline操作Redis資料庫

2021-09-23 15:44:00 字數 824 閱讀 8546

redis的 c - s 架構:

基於客戶端-服務端模型以及請求/響應協議的tcp服務。

客戶端向服務端傳送乙個查詢請求,並監聽socket返回。

通常是以阻塞模式,等待服務端響應。

服務端處理命令,並將結果返回給客戶端。

存在的問題:

如果redis服務端需要同時處理多個請求,加上網路延遲,那麼服務端利用率不高,效率降低。

解決的辦法:

管道pipeline

管道pipeline

可以一次性傳送多條命令並在執行完後一次性將結果返回。

pipeline通過減少客戶端與redis的通訊次數來實現降低往返延時時間。

實現的原理

實現的原理是佇列。

client可以將三個命令放到乙個tcp報文一起傳送。

server則可以將三條命令的處理結果放到乙個tcp報文返回。

佇列是先進先出,這樣就保證資料的順序性。

1. 建立redis管道

2. 將redis請求新增到佇列

3. 執行請求

# 建立redis管道

pl = redis_conn.pipeline()

# 將redis請求新增到佇列

pl.setex('sms_%s' % mobile, constants.sms_code_redis_expires, sms_code)

pl.setex('send_flag_%s' % mobile, constants.send_sms_code_interval, 1)

# 執行請求

pl.execute()

re模組操作

在python中需要通過正規表示式對字串進行匹配的時候,可以使用乙個模組,名字為re coding utf 8 匯入re模組 import re 使用match方法進行匹配操作 result re.match 正規表示式,要匹配的字串 如果上一步匹配到資料的話,可以使用group方法來提取資料 re...

Redis中的批量操作Pipeline

大多數情況下,我們都會通過請求 相應機制去操作redis。只用這種模式的一般的步驟是,先獲得jedis例項,然後通過jedis的get put方法與redis互動。由於redis是單執行緒的,下一次請求必須等待上一次請求執行完成後才能繼續執行。然而使用pipeline模式,客戶端可以一次性的傳送多個...

Redis中的批量操作Pipeline

大多數情況下,我們都會通過請求 相應機制去操作redis。只用這種模式的一般的步驟是,先獲得jedis例項,然後通過jedis的get put方法與redis互動。由於redis是單執行緒的,下一次請求必須等待上一次請求執行完成後才能繼續執行。然而使用pipeline模式,客戶端可以一次性的傳送多個...