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