类似于键值的商店,用于大多数特定的URI

时间:2014-11-27 21:26:07

标签: node.js data-structures redis restify

是否存在用于在任意基于URI的密钥上存储值的数据结构/模型,然后如果为null,则返回到不太具体的路径/域?即。

SET example.com "hello"
SET a.example.com/foo "world"
GET example.com => "hello"
GET example.com/foo => "hello"
GET a.example.com/foo/bar => "world"

Value只是一个序列化的JSON对象;我不需要对它进行任何列表操作。

目前,我正在使用redis支持的node.js / restify(尽管我对其他数据存储区开放)。我意识到我可以拥有一个平面键值存储,并遍历所有子路径/域,但是对数据存储区进行十几次可能空的调用会感觉效率低下。

1 个答案:

答案 0 :(得分:0)

您可以对失败的密钥查找执行二进制搜索,以查找最具体的匹配URI。例如,你有一个深度为8的URI;首先检查完全匹配,如果失败,则检查depth-4 URI;如果失败则检查depth-2 URI,否则检查depth-6 URI;假设在这种情况下深度4和深度6查找成功,接下来你将进行深度7查找,如果成功则返回深度7值,否则返回深度6值。

作为替代方案,通过Google我找到了leveldb的trie实现,可以解决这个问题,但一般情况下似乎没有很多数据库实现。