Python消息中间件 redis

偏执的太偏执、 2022-01-05 13:25 349阅读 0赞

消息中间件的应用场景

  • 异步通信
  • 应用解耦
  • 缓解流量高峰压力

日志处理平台

​ <—————————————————————————————>|——微信告警

日志采集—消息队列 —|—-异常分析—消息队列 |—web告警

​ <———————————-> —|—-日志存储 <—————-> |—邮件告警


消息中间件需要满足

  • 高性能(单机性能)
  • 高可用 (单节点故障服务无影响)
  • 横向扩展 (可增加服务器数量)

消息中间件中的各种概念和角色

producer ——- queue/channel/topic ———- consumer

​ broker


redis使用场景

String

  • 缓存二进制数据,比如图片,序列化对象
  • 技术器 ,比如文章访问量统计
  • 位运算,节约内存

List

  • 获取最新的N条数据
  • 消息队列
  • 实时的分析系统,比如服务器监控程序

Hash

  • 存储具有多个属性的对象,比如用户的年龄,性别,积分等

Set

  • 集合操作,比如通过交集,实现共同的关注,共同的好友。
  • 存储无序不重复数据,比如存储文章标签。

Sorted Set 有序集合

  • TopN排行榜,比如排行榜
  • 范围查找,比如判断ip地址所在地
  • 优先级队列
  • 过期项目处理

Pub Sub 发布订阅

实时的消息系统,比如即时聊天(私有通道),群聊。


基于redis list

python 客户端*生产者

  1. import redis
  2. import names
  3. import time
  4. r = redis.StrictRedis(host='192.168.56.101',port=6379,db=0)
  5. while True:
  6. time.sleep(2)
  7. name=names.get_full_name()
  8. x = r.lpush('names',name) # 向列表头(左侧)添加元素,返回列表长度
  9. print(x,name)

python服务端*消费者

  1. import redis
  2. r = redis.StrictRedis(host='localhost',port=6379,db=0)
  3. def consume(key):
  4. while True:
  5. value = r.brpop(key)
  6. # 返回并删除键为key,names的列表中的尾元素
  7. # 如果list为空,则会一直阻塞等待
  8. yield value
  9. for v in consume('names'):
  10. print(v)

更多详细的python-redis操作

  1. https://cloud.tencent.com/developer/article/1151834

基于发布订阅

  1. # 生产者,发布,将上述lpush --> publish
  2. import redis
  3. import names
  4. import time
  5. r = redis.StrictRedis(host='192.168.56.101',port=6379,db=0)
  6. while True:
  7. time.sleep(2)
  8. name=names.get_full_name()
  9. x = r.publish('names',name) # x为订阅者的数量
  10. print(x,name)
  11. # 消费者,订阅者
  12. import redis
  13. r = redis.StrictRedis(host='0.0.0.0',port=6379,db=0)
  14. ps = r.pubsub()
  15. ps.subscribe('names')
  16. for item in ps.listen():
  17. print (item)

发表评论

表情:
评论列表 (有 0 条评论,349人围观)

还没有评论,来说两句吧...

相关阅读

    相关 消息中间

    1. 什么是消息中间件 消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。 消息中间件则是将软件与软件之间的交互方式进

    相关 中间-消息中间

    jms是java ee 的消息规范,其实现是hornetq和activemq等,小型系统直接使用jms是可以的但是大型系统不太适用。 消息中间件主要保证消息的顺序保证,扩展性

    相关 消息中间

        RabbitMQ:采用Erlang语言实现的AMQP协议的消息中间件,最初起源于金融系统,用于在分布式系统中存储转发消息,它在可靠性、可用性、扩展性、功能丰富等方面表现

    相关 消息中间

    1 消息中间件(MOM) 消息中间件是指利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。 通过提供消息传递和消息排队模型,它可