使用python的redis 实现消息的pub/sub功能

直接上代码:

首先需要明确的是,客户端向服务端去发送消息,服务端只需要订阅是哪些各频道即可,然后客户端向这些个频道发送消息

在客户端的代码:

1 #!/usr/bin/env python
2 #coding:utf-8
3 
4 import redis
5 
6 rc = redis.Redis(host='127.0.0.1')
7 rc.pubsub()
8 rc.publish('fm100','test100')
9 rc.publish('fm99','test99')

服务端的代码:

 1 #!/usr/bin/env python
 2 #coding:utf-8
 3 
 4 import redis
 5 
 6 rc = redis.Redis(host='127.0.0.1')
 7 
 8 ps = rc.pubsub()
 9 
10 ps.subscribe(['fm100','fm99'])
11 
12 while True:
13     for item in ps.listen():
14         print item

这上面是一个死循环,表示不断的监听来自客户端发送的消息

其实更类似于一个socket的实现

我们在进行分布式监控机器的各项性能的时候,可以使用上述的代码

转载于:https://www.cnblogs.com/shangzekai/p/5220943.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个简单的Spring Boot Redis Pub/Sub示例代码: 首先需要在pom.xml中添加redis和spring-boot-starter-data-redis依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.6.0</version> </dependency> ``` 然后编写一个Redis消息监听器: ```java @Component public class RedisMessageListener { @Autowired private StringRedisTemplate stringRedisTemplate; @Autowired private MessageListenerAdapter messageListenerAdapter; @PostConstruct public void init() { new Thread(() -> { Jedis jedis = new Jedis("localhost"); jedis.subscribe(messageListenerAdapter, "test-channel"); }).start(); } @Bean public MessageListenerAdapter messageListenerAdapter() { return new MessageListenerAdapter(new RedisMessageSubscriber()); } public class RedisMessageSubscriber { public void handleMessage(String message) { System.out.println("Received message: " + message); } } } ``` 然后可以在其他地方发布消息Redis中: ```java @RestController public class RedisController { @Autowired private StringRedisTemplate stringRedisTemplate; @GetMapping("/publish") public String publish() { stringRedisTemplate.convertAndSend("test-channel", "Hello, Redis!"); return "Message sent"; } } ``` 这样,当调用/publish接口时,就会向Redis的test-channel频道发布一条消息RedisMessageListener中的RedisMessageSubscriber就会收到该消息并进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值