这些键值存储语义叫做什么?

时间:2016-03-08 20:50:59

标签: publish-subscribe key-value

想象一下一个简单的键值服务器,允许以下动词:

PUT键值 - 将键值设置为值 GET键 - 获取键的值(如果已设置)或指示键缺失 WAIT键超时 - 如果设置了键的值,请立即获取。否则,阻止/等待,直到其他人PUT键,尽快返回。如果达到超时,则表示失败。

这些语义在各种本地执行环境中有点类似于Futures和Promises,但在分布式环境中,我想象它通常是通过消息传递协议和键值存储的某种组合来实现的。

我想知道是否有人:

  1. 意识到这些语义的好名字,所以我可以开始谷歌搜索
  2. 意识到开箱即用的工具

1 个答案:

答案 0 :(得分:0)

仍不确定调用语义是什么 - 但这可以通过使用redis阻止来实现。

使用阻止pop / push与单元素列表,我们可以按如下方式实现GET:

  

BRPOPLPUSH q q 0

如果列表已经存在,它将立即返回值,然后将其添加回列表。如果没有,它将在添加值之前阻塞(或者您可以使用最后一个arg设置超时)。

要设置值,您只需按下列表即可。

  

LPUSH q 1

如果您想确保真正的SET语义,您可能更喜欢事务

MULTI
DEL q
LPUSH q 1
EXEC