利用redis的訂閱和發布來實現即時監控的一個DEMO(Python版本)

來源:互聯網
上載者:User

       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就做好了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.