是否可以等待Redis中存在密钥?让发动机在后台运行以处理繁重的工作。这个想法是让其余的api向Redis发送请求,引擎从该列表中读取。然后,其余的api将监视一个特定的密钥,该密钥最终将包含发送给客户端的响应。
这可能吗? - 当我做自己的研究时,我一直在讨论BLPOP,但这是一个列表而不是Redis中的特定密钥。
有没有更好的方法来做到这一点?
答案 0 :(得分:2)
您可以使用Redis Keyspace Notification功能来实现目标。
使用此功能,当有人创建/设置给定密钥时,Redis会向特定频道发布消息。为了等待给定密钥存在,您只需要描述此特定频道,并等待通知。
// Enable keyspace notification:
config set notify-keyspace-events g$K
// subscribe the specific channel: __keyspace@<db_num>__:<key_name>
subscribe '__keyspace@0__:key'
当有人设置密钥时,您会收到以下通知:
1) "message"
2) "__keyspace@0__:key"
3) "set"