Django中pipeline操作Redis数据库
生活随笔
收集整理的這篇文章主要介紹了
Django中pipeline操作Redis数据库
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.Redis的 C - S 架構(gòu):
- 基于客戶端-服務(wù)端模型以及請求/響應(yīng)協(xié)議的TCP服務(wù)。
- 客戶端向服務(wù)端發(fā)送一個查詢請求,并監(jiān)聽Socket返回。
- 通常是以阻塞模式,等待服務(wù)端響應(yīng)。
- 服務(wù)端處理命令,并將結(jié)果返回給客戶端。
存在的問題:
- 如果Redis服務(wù)端需要同時處理多個請求,加上網(wǎng)絡(luò)延遲,那么服務(wù)端利用率不高,效率降低。
解決的辦法:
- 管道pipeline
?
?
2.pipeline的介紹
- 可以一次性發(fā)送多條命令并在執(zhí)行完后一次性將結(jié)果返回。
- pipeline通過減少客戶端與Redis的通信次數(shù)來實現(xiàn)降低往返延時時間。
實現(xiàn)的原理
- 實現(xiàn)的原理是隊列。
- Client可以將三個命令放到一個tcp報文一起發(fā)送。
- Server則可以將三條命令的處理結(jié)果放到一個tcp報文返回。
- 隊列是先進(jìn)先出,這樣就保證數(shù)據(jù)的順序性。
?
?
3. pipeline操作Redis數(shù)據(jù)庫
3.1實現(xiàn)步驟
1. 創(chuàng)建Redis管道 2. 將Redis請求添加到隊列 3. 執(zhí)行請求3.2代碼實現(xiàn)
# 創(chuàng)建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) # 執(zhí)行請求 pl.execute()總結(jié)
以上是生活随笔為你收集整理的Django中pipeline操作Redis数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Echarts散点图
- 下一篇: Pandas的学习(读取mongodb数