1.python连接redis
python连接redis写入一条数据
import redis r = redis.Redis(host='192.168.1.232', port=6379,db=0,password='123456') r.set('foo', 'Bar') print(r.get('foo'))
打印:
b'Bar
2.管道:redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。
举例:把name是xixi和age是18设置到redis里
import redis pool = redis.ConnectionPool(host='192.168.1.232', port=6379,db=0,password='123456') r = redis.Redis(connection_pool=pool) #pipe = r.pipeline(transaction=False) pipe = r.pipeline(transaction=True) #事务 #进行两个设置 pipe.set('name', 'xixi') pipe.set('age', '18') #到这里一次执行设置 pipe.execute()
3.发布订阅:主播发布消息,在线就能收到,不在线就收不到
(1)redis_helper.py
import redis class RedisHelper: def __init__(self): #连接redis pool = redis.ConnectionPool(host='192.168.1.232', port=6379, db=0, password='123456') self.__conn = redis.Redis(connection_pool=pool) #队列名,双方都在一个频道上 self.chan_sub = 'fm104.5' #订阅频道 self.chan_pub = 'fm104.5' #发布频道 #发布 def public(self, msg): self.__conn.publish(self.chan_pub, msg) #调用publish方法写上发布的频道chan_pub跟消息msg return True #订阅 def subscribe(self): pub = self.__conn.pubsub() #打开收音机 pub.subscribe(self.chan_sub) #调整频道 pub.parse_response() #准备监听 return pub #返回这个实例
(2)启动发布.py
from redis_helper import RedisHelper obj = RedisHelper() #实例化 obj.public('xixi') #直接发布
发布消息执行:python 发布.py
(3)订阅.py
from redis_helper import RedisHelper obj = RedisHelper() #生成实例 redis_sub = obj.subscribe() #调用subscribe方法 while True: msg= redis_sub.parse_response() #阻塞:没有数据就在这里卡住,开始不断的去监听 print('监听数据:',msg)
当发布方发布消息后:
监听数据: [b'message', b'fm104.5', b'xixi']
浙公网安备 33010602011771号