这些键值存储语义称为什么?

What are these key-value store semantics called?

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

PUT 键值 - 将键的值设置为值 GET key - 如果设置了键,则获取键的值,或者指示它丢失 WAIT key timeout - 如果设置了key的值,立即获取。否则,block/wait 直到其他人 PUT 密钥,尽快返回。如果超时,则表示失败。

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

我想知道是否有人:

  1. 知道这些语义的好名字所以我可以开始谷歌搜索
  2. 了解提供开箱即用的工具

仍然不确定所谓的语义是什么——但这可以使用 redis 阻塞来完成。

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

BRPOPLPUSH q q 0

如果列表已经存在,它会立即return该值,然后将其添加回列表。如果没有,它将阻塞直到添加一个值(或者您可以使用最后一个参数设置超时)。

要设置值,只需推送到列表即可。

LPUSH q 1

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

MULTI
DEL q
LPUSH q 1
EXEC