关于redis的pub/sub的一个问题,小生着急希望大神进来指点迷津
我也是不太了解,有表述不太明确到地方还望见谅!
现在有这样到一个问题,我有四台游戏服务器,每个用户可能登录到时候根据游戏帐号到不同登录不同到游戏服务器,redis存储服务器就一个,比如玩家1在1服务器上,玩家2在2服务器上,现在为了使玩家1,2通讯,通过redis的消息列队pub/sub实现!
现在问题是,当每个玩家登录的时候每个人分别订阅自己的队列(这样我也不知到redis消息队列可以订阅到上限是多少),还是所有玩家订阅统一的一个,然后服务器发布消息到时候每个玩家去做判断好?
还是我根本没理解好这个实现过程!
希望大神指点迷津!
加上一小段简单意思到代码:
发布(发送):
1 import redis
2 rc = redis.Redis(host = '127.0.0.1')
3 ps = rc.pubsub()
4 ps.subscribe(['foo','bar'])
5 rc.publish('foo',['a','hello'])
订阅(接收):
1 import
redis
2 rc = redis.Redis(host = '127.0.0.1')
3 ps = rc.pubsub()
4 ps.subscribe(['foo','bar'])
5 for item in ps.listen():
6 if item['type'] == 'message':
7 print item['data']
redis的pub/sub, python,服务器间通讯,
[解决办法]
我觉得pub/sub机制是多对多通讯用的:发送方不必知道有多少接收方,接收方也不必知道有多少发送方。
我会为每个用户建一个信箱(list or set),发送消息就是把消息加到接收方的信箱,接收消息就是获取自己信箱的内容(并清空信箱)。
[解决办法]