管道&发布订阅
管道
- redis支持事务
- redis如何实现事务
# 创建连接池对象
import redis
class Pool:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = redis.ConnectionPool(host='127.0.0.1',port=6379,max_connections=100)
return cls._instance
pool = Pool()
conn = redis.Redis(connection_pool=pool)
# 基于管道支持事务
pipe = conn.pipeline(transaction=True)
pipe.multi()
pipe.set('age',18)
pipe.set('age1',19)
pipe.execute() # 这句才是真正的去执行
发布订阅
应用于时时聊天系统或者粉丝关注,明星发明微博,粉丝们时时收到消息的情况。
发布者
import redis
pool = redis.ConnectionPool(host='公网ip', port=6379, password='redis密码')
r = redis.Redis(connection_pool=pool)
r.publish("fm104.5", "Hi,yuan!") # 向 ‘频道内’发布消息
订阅者
import redis
pool = redis.ConnectionPool(host='公网ip', port=6379, password='redis密码')
r = redis.Redis(connection_pool=pool)
pub = r.pubsub() # 订阅对象
pub.subscribe("fm104.5") # 订阅一个频道的意思,即监听某个name
pub.parse_response() # 解析响应内容
while 1:
msg = pub.parse_response() # 解析影响内容
print(msg