利用redis的订阅和发布来实现实时监控的一个DEMO(Python版本)
2013-07-31 09:15
1271 查看
redis的list类型有个很好的特性,就是每次添加元素后会返回当前list的长度,利用这个特点,我们可以监控它的长度,比如我们的key是用户注册的IP地址,list中存放的是已经在此IP地址上注册的用户的ID,当用户数超过1000的时候来发一个告警,而redis的订阅和发布功能就能帮你很轻松地实现通知监控程序。
第一步,下载需要的软件:
redis: http://redis.googlecode.com/files/redis-2.6.14.tar.gz
redis-py: https://github.com/andymccurdy/redis-py/archive/master.zip
第二步,编写客户端client.py:
#!/usr/bin/env python
#coding=utf-8
import redis
if __name__ == "__main__":
rc = redis.Redis(host='10.250.2.18',port=6379,db=0,password='master123')
ip_addr = "192.168.1.100"
for i in xrange(500):
count = rc.lpush("ip:192.168.1.100",i)
if count > 1000:
rc.publish("count_alarm", count)
rc.publish('ip_alarm', ip_addr)
如果没有设置redis的密码,可以删除password属性【默认没有配置】
第三步,编写服务端 server.py:
#!/usr/bin/env python
#coding=utf-8
import redis
rc = redis.Redis(host='10.250.2.18',port=6379,db=0,password='master123')
ps = rc.pubsub()
ps.subscribe(['count_alarm', 'ip_alarm']) #订阅两个频道,分别是count_alarm ip_alarm
for item in ps.listen():
if item['type'] == 'message':
print item['channel'] , item['data'] # 此处就可以做和监控相关的事了,比如发邮件通知、短信通知或者IM通知等等
第四步,查看效果
运行server.py:
python server.py
运行client.py:
python client.py
client.py会马上结束,而server.py会一直监听,一个简单的DEMO就做好了
第一步,下载需要的软件:
redis: http://redis.googlecode.com/files/redis-2.6.14.tar.gz
redis-py: https://github.com/andymccurdy/redis-py/archive/master.zip
第二步,编写客户端client.py:
#!/usr/bin/env python
#coding=utf-8
import redis
if __name__ == "__main__":
rc = redis.Redis(host='10.250.2.18',port=6379,db=0,password='master123')
ip_addr = "192.168.1.100"
for i in xrange(500):
count = rc.lpush("ip:192.168.1.100",i)
if count > 1000:
rc.publish("count_alarm", count)
rc.publish('ip_alarm', ip_addr)
如果没有设置redis的密码,可以删除password属性【默认没有配置】
第三步,编写服务端 server.py:
#!/usr/bin/env python
#coding=utf-8
import redis
rc = redis.Redis(host='10.250.2.18',port=6379,db=0,password='master123')
ps = rc.pubsub()
ps.subscribe(['count_alarm', 'ip_alarm']) #订阅两个频道,分别是count_alarm ip_alarm
for item in ps.listen():
if item['type'] == 'message':
print item['channel'] , item['data'] # 此处就可以做和监控相关的事了,比如发邮件通知、短信通知或者IM通知等等
第四步,查看效果
运行server.py:
python server.py
运行client.py:
python client.py
client.py会马上结束,而server.py会一直监听,一个简单的DEMO就做好了
相关文章推荐
- 利用redis的订阅和发布来实现实时监控的一个DEMO(Python版本)
- Redis订阅&发布以及python代码实现
- Spring Data Redis实现一个订阅/发布系统
- 利用redis简单实现消息订阅和发布
- Redis系列-JAVA与redis整合-Spring Data Redis实现一个订阅/发布系统
- python 实现redis订阅发布功能
- python实现 redis订阅与发布
- 使用Redis实现一个订阅/发布系统
- python redis 实现订阅发布
- redis利用pipline实现发布订阅机制
- Spring Data Redis实现一个订阅/发布系统
- Redis in Python: 发布订阅
- redis实现发布订阅
- 使用redis的发布订阅模式实现消息队列
- 【脚本语言系列】关于Python实现网络模式发布-订阅,你需要知道的事
- 利用KNN算法实现的一个demo
- redis发布订阅java代码实现
- 利用QtQuick实现UI的一个Demo
- redis订阅发布机制实现分布式锁
- python实现一个简单的登录注册Demo