2016-11-04 28 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"