2016-03-08 59 views
0

想象一下,一個簡單的鍵值服務器,允許下列動詞:調用這些鍵值存儲語義是什麼?

PUT鍵值 - 設置鍵值重視 GET關鍵 - 獲取鍵的值,如果這個設定,或表明它缺少 WAIT鍵超時 - 如果鍵的值已設定,請立即獲取。否則,阻止/等待,直到其他人把鑰匙歸還,儘快返回。如果達到超時,則表明失敗。

這些語義在各種本地執行環境中有些類似於Futures和Promises,但在分佈式環境中,我想象它通常是通過消息協議和鍵值存儲的某種組合來實現的。

我想知道如果任何人可以是:

  1. 意識到一個好名字這些語義,這樣我就可以開始使用Google
  2. 意識到一個工具,它提供了這個開箱即用的

回答

0

仍然不確定什麼語義被稱爲 - 但這可以通過使用redis阻塞來實現。

使用攔截彈出/一個元素列表推,我們可以實現的GET如下:

BRPOPLPUSH QQ 0

如果列表中已經存在,它會立即返回值,然後將其添加回列表中。如果沒有,它會阻塞,直到增加一個值(或者你可以使用最後一個參數設置超時)。

要設置一個值,您可以推送到列表。

LPUSH的Q 1

如果要確保真正的語義集,你可能更喜歡交易

MULTI 
DEL q 
LPUSH q 1 
EXEC