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模式,客戶端可以一次性的傳送多個...