Redis管道和釋出訂閱
阿新 • • 發佈:2018-11-14
管道:原子性執行命令
''' redis-py預設在執行每次請求都會建立(連線池申請連線)和斷開(歸還連線池)一次連線操作, 如果想要在一次請求中指定多個命令,則可以使用pipline實現一次請求指定多個命令, 並且預設情況下一次pipline 是原子性操作 ''' import redis pool = redis.ConnectionPool(host='127.0.0.1', port=6379) r = redis.Redis(connection_pool=pool) # pipe = r.pipeline(transaction=False) pipe = r.pipeline(transaction=True)# 這兩條一起執行 pipe.set('name', 'zhangsan') pipe.set('role', 'student') pipe.execute()
釋出訂閱:僅在Redis內部使用的
要呼叫的類:RedisHelper
class RedisHelper: def __init__(self): self.__conn = redis.Redis(host='127.0.0.1') self.chan_sub = 'fm104.5' self.chan_pub = 'fm104.5' def public(self, msg): #調redis的publish方法發訊息 self.__conn.publish(self.chan_pub, msg) return True def subscribe(self): # 開始訂閱,相當於‘開啟收音機’ pub = self.__conn.pubsub() # 調頻道 pub.subscribe(self.chan_sub) # 準備接收訊息,再調一下才開始真正的接收 pub.parse_response() returnpub
釋出者:
import RedisHelper obj = RedisHelper() obj.public('hello')
訂閱者:
import RedisHelper obj = RedisHelper() redis_sub = obj.subscribe() while True: # 再調一次才開始收,沒有就阻塞 msg = redis_sub.parse_response() print(msg)