是否有数据结构/模型用于将值存储在任意基于 URI 的键中,然后如果为空,则返回到不太具体的路径/域?即
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(尽管我对其他数据存储开放)。我意识到我可以有一个平面键值存储,并循环遍历所有子路径/域,但是对数据存储进行十几个可能为空的调用感觉效率很低。
最佳答案
您可以对失败的键查找进行二进制搜索,以找到最具体的匹配 URI。例如,您有一个深度为 8 的 URI;首先检查精确匹配,如果失败则检查深度 4 URI;如果失败则检查深度 2 URI,否则检查深度 6 URI;假设在这种情况下深度 4 和深度 6 查找成功,接下来你将进行深度 7 查找,如果成功则返回深度 7 值,否则返回深度 6 值。
作为替代方案,我通过 Google 找到了一个 trie leveldb 的实现可能会起到作用,但一般来说,似乎没有太多的数据库 trie 实现。
关于node.js - 大多数特定 URI 的类似键值的存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27178832/