node.js - 大多数特定 URI 的类似键值的存储

标签 node.js data-structures redis restify

是否有数据结构/模型用于将值存储在任意基于 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/

相关文章:

node.js - 通过 node.js 服务器提供页面时压缩内容

javascript - 公共(public) Assets 的正则表达式路线

node.js - DynamoDB : Query to find an item in an array of strings

php - 创建具有指定数量元素的数组

redis - 如何按分区读取排序集?

node.js - 将 Mongo ObjectId 保存到另一个文档中

java - soundex算法的数据结构?

java - 自定义数据结构(元素+权重)

node.js - 如何在 node-redis 中使用 Unix 套接字?

ruby-on-rails - redis_store session 没有过期