import redis
class SendRedis(object):
def init(self):
self.pool = redis.ConnectionPool(host='192.168.67.129', port=6379, db=0)
self.red = redis.StrictRedis(host='192.168.67.129')
self.msg_key = 'msg_redis'
def send(self):
pub = self.red.pubsub() # 开始订阅
pub.subscribe(self.msg_key) # 订阅频道
while True:
msg = input("请输入你要发送的消息(over结束):")
self.red.publish(self.msg_key, msg) # 开始发布消息
if msg == "over":
print("停止发送")
break
# 接收
import redis
class SubscribeRedis(object):
def __init__(self):
self.pool = redis.ConnectionPool(host='192.168.67.129', port=6379, db=0)
self.red = redis.StrictRedis(connection_pool=self.pool)
self.msg_key = 'msg_redis'
def subscribe(self):
pub = self.red.pubsub() # 开始订阅
pub.subscribe(self.msg_key) # 订阅频道
for item in pub.listen(): # 监听状态:有消息发布了就拿过来
print(item)
if item['type'] == 'message':
print(item['channel'].decode())
print(item['data'])
if item['data'] == 'over':
print("%s : 停止发送" % (item['channel'].decode()))
pub.unsubscribe(self.msg_key)
print("取消了订阅")
break
elif item['type'] == 'subscribe':
print("获取的类型不对: %s" % item['type'])
break
main
import threading
from sendRedis import SendRedis
from subscribeRedis import SubscribeRedis
class MainRedis(object):
def main(self):
send = SendRedis()
sub = SubscribeRedis()
t1 = threading.Thread(target=send.send(), args=())
t2 = threading.Thread(target=sub.subscribe(), args=())
t1.start()
t2.start()