2016-03-08 58 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