Openresty定时器ngx.timer通过Redis的pubsub进行通信

做一个小实验:

先打开一个redis-cli, 监听所有事件:

127.0.0.1:6379>  config set notify-keyspace-events KEA 
127.0.0.1:6379> psubscribe __key*@0__:* 

再开一个redis-cli,进行publish与subscribe操作:

127.0.0.1:6379> publish chatroom "123"
127.0.0.1:6379> publish chatroom "abc"

然于,打开一个python redis client进行subscribe:

r = redis.StrictRedis(host='localhost', port=6379, db=0, password='candylab.net')

ps = rc.pubsub()

ps.subscribe('chatroom')

for item in ps.listen():  
    if item['type'] == 'message':  
        print item['data']  

Python Redis客户端

LUA Redis客户端

LUA Redis客户端

实际上我们是可以,在OpenResty的定时器处理过程中对Redis进行操作的, 这种对redis的数据操作的API是不会在OpenResty的各个阶段被disabled,所以我们可以通过redis进行表数据共享,通过订阅与支持Redis客户端口的相应语言进行耦合通信与协作工作,比如我们可以通过publish IP数据让订阅者对当地的Iptable进行封禁。

实际上下面的思路是,用Openrsty的Timer生成心跳,让OpenResty通过publish吐出一个二维结构的计划任务表,让对应订阅者去执行,这样在Openresty阶段做的就是这张表的维护与发布,基于OpenResty本身Timer设定的心跳的基础上。

糖果

糖果

糖果
LUA教程

如果不小心安装错 SQL Server 为 Evaluation 的版本,要小心当超过 180 天之后,系统就会无法正常使用了 这几天遇到一个蛮特别的案例,原本收到的问题是 “维护计划” 忽然无法使用,即便是里面没有任何的Task,都无法顺利地执行。但从对方所提供的错误消...… Continue reading

PLUM NIZ静电容键盘怎么样?

Published on September 25, 2020

程序员如何选择合适的机械键盘

Published on September 18, 2020