2016-11-04 30 views
1

是否有可能等待Redis中存在密钥?让引擎在处理繁重工作的背景中运行。这个想法是让其余的API向Redis发送请求,并从该列表读取引擎。其余的api会监视一个特定的密钥,最终将包含发送给客户端的响应。Redis/Node等待密钥存在

这可能吗? - 当我做我自己的研究时,我一直在使用BLPOP,但这是列表而不是Redis中的特定密钥。

有没有更好的方法来做到这一点?

+2

听起来像是你要使用的Redis的发布/订阅的一部分通知REST API的关键已经添加。 – david

+0

@david我知道pub/sub之前使用过,但实际上在阅读你的评论后,你实际上给了我一个好主意:)非常感谢 – kevingilbert100

回答

2

您可以使用Redis Keyspace Notification功能来实现目标。

借助此功能,当有人创建/设置给定密钥时,Redis会将消息发布到特定频道。为了等待一个给定的密钥存在,您只需要为这个特定频道订阅,然后等待通知。

// Enable keyspace notification: 
config set notify-keyspace-events g$K 
// subscribe the specific channel: [email protected]<db_num>__:<key_name> 
subscribe '[email protected]__:key' 

当有人设置键,你会得到以下通知:

1) "message" 
2) "[email protected]__:key" 
3) "set"