此篇文章主要是詳細介紹了python使用redis控制模塊來和redis完成互動,文章內容緊扣主題進行詳盡的基本介紹,具有很強的實用價值,需用的朋友可以學習一下
redis模塊的使用
1.安裝模塊
pip3 install redis
2.導入模塊
import redis
3.接口方式
嚴苛連接模式:r=redis.StrictRedis(host=“”,port=)
更Python變的連接模式:r=redis.Redis(host=“”,port=)
StrictRedis用以完成絕大多數官方指令,并用官方詞匯和指令
Redis與StrictRedis的區別在于:Redis是StrictRedis的派生類,用以往前適配舊版的redis-py,而且這個接口方式是更"python化"的
4.連接池
為了節約網絡資源,降低數次聯接消耗,連接池的功效等同于總覽好幾個手機客戶端與服務器端連接,當新手機客戶端需用聯接時,只必須到連接池獲得1個聯接就可以,事實上就是一個連接共享給好幾個手機客戶端。
import redis pool=redis.ConnectionPool(host='localhost',port=6379,decode_responses=True) r=redis.Redis(connection_pool=pool) r2=redis.Redis(connection_pool=pool) r.set('apple','a') print(r.get('apple')) r2.set('banana','b') print(r.get('banana')) print(r.client_list()) print(r2.client_list())#可以看出兩個連接的id是一致的,說明是一個客戶端連接
5.實際操作
系數的設定和獲得,可以參考一下redis的指令,redis控制模塊里的相匹配功能性的函數名基本和redis中的認可
留意默認設置前提下,設定的值或獲得數值均為bytes類型,如果要改成str種類,必須在聯接時加上上decode_responses=True】
設定值:
redis中set()==>r.set() redis中setnx()==>r.set() redis中setex()==>r.setex() redis中setbit()==>r.setbit() redis中mset()==>r.mset() redis中hset()==>r.hset() redis中sadd()==>r.sadd() #其他。。。基本redis的命令名與redis模塊中的函數名一致
獲取:
redis中get()==》r.get() redis中mget()==》r.mget() redis中getset()==》r.getset() redis中getrange()==》r.getrange() #其他。。。基本redis的命令名與redis模塊中的函數名一致 import redis r=redis.Redis(host='localhost',port=6379,decode_responses=True) #r=redis.StrictRedis(host='localhost',port=6379) r.set('key','value') value=r.get('key') #print(type(value)) print(value) r.hset('info','name','lilei') r.hset('info','age','18') print(r.hgetall('info')) r.sadd('course','math','english','chinese') print(r.smembers('course'))
管道
一般情況下,執行一條命令后必須等待結果才能輸入下一次命令,管道用于在一次請求中執行多個命令。
參數介紹:
transaction:指示是否所有的命令應該以原子方式執行。
import redis,time r=redis.Redis(host="localhost",port=6379,decode_responses=True) pipe=r.pipeline(transaction=True) pipe.set('p1','v2') pipe.set('p2','v3') pipe.set('p3','v4') time.sleep(5) pipe.execute() 事務 python中可以使用管道來代替事務: 補充:監視watch:pipe.watch() import redis,time import redis.exceptions r=redis.Redis(host='localhost',port=6379,decode_responses=True) pipe=r.pipeline() print(r.get('a')) try: #pipe.watch('a') pipe.multi() pipe.set('here','there') pipe.set('here1','there1') pipe.set('here2','there2') time.sleep(5) pipe.execute() except redis.exceptions.WatchError as e: print("Error") 訂閱發布 發布方: import redis r=redis.Redis(host="localhost",port=6379,decode_responses=True) #發布使用publish(self,channel,message):Publish``message``on``channel``. Flag=True while Flag: msg=input("主播請講話>>:") if len(msg)==0: continue elif msg=='quit': break else: r.publish('cctv0',msg)
訂閱方:
當訂閱成功后,第一次接收返回的第一個消息是一個訂閱確認消息:
import redis r=redis.Redis(host="localhost",port=6379,decode_responses=True) #發布使用publish(self,channel,message):Publish``message``on``channel``. Flag=True chan=r.pubsub()#返回一個發布/訂閱對象 msg_reciver=chan.subscribe('cctv0')#訂閱 msg=chan.parse_response()#第一次會返回訂閱確認信息 print(msg) print("訂閱成功,開始接收------") while Flag: msg=chan.parse_response()#接收消息 print(">>:",msg[2])#此處的信息格式['消息類型','頻道','消息'],所以使用[2]來獲取
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家帶來幫助。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128725.html
摘要:月日,助力在北京舉辦全球最盛大的年度聚會,國內外頂尖的工程師做了很精彩的分享和互動,現場多名愛好者參與了此次技術主題盛宴。后續會有更多現場照片持續更新 11月15日,SegmentFault 助力PyCon China 在北京舉辦全球 Pythoneer 最盛大的年度聚會,國內外頂尖的Python 工程師做了很精彩的分享和互動,現場300多名python愛好者參與了此次技術主題盛宴。 ...
摘要:一介紹是宜信公司團隊開發的一款數據庫審核產品,可幫助開發人員快速發現數據庫質量問題,提升工作效率。此平臺可實現對數據庫進行多維度對象結構文本執行計劃及執行特征的審核,用以評估對象結構設計質量及運行效率。執行計劃指數據庫中的執行計劃。 一、介紹 Themis是宜信公司DBA團隊開發的一款數據庫審核產品,可幫助DBA、開發人員快速發現數據庫質量問題,提升工作效率。其名稱源自希臘神話中的正義...
閱讀 911·2023-01-14 11:38
閱讀 878·2023-01-14 11:04
閱讀 740·2023-01-14 10:48
閱讀 1982·2023-01-14 10:34
閱讀 942·2023-01-14 10:24
閱讀 819·2023-01-14 10:18
閱讀 499·2023-01-14 10:09
閱讀 572·2023-01-14 10:02