1. 程式人生 > >Redis管道和釋出訂閱

Redis管道和釋出訂閱

管道:原子性執行命令

'''
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() return
pub

釋出者:

import RedisHelper
 
obj = RedisHelper()
obj.public('hello')

訂閱者:

import RedisHelper

obj = RedisHelper()
redis_sub = obj.subscribe()

while True:
    # 再調一次才開始收,沒有就阻塞
    msg = redis_sub.parse_response()
    print(msg)