jackyz
2013-02-04 09:08:44 +08:00
不知道是否准确理解了你的问题。
单层的 key-val 结构可以直接用 redis hash 存储 object-id: [key: val, key: val, ...]
多层的 key-val 结构,可以把 key 压平,继续存在 redis hash 里 object-id: [key: val, keyl1.keyl2: val, ...] 根据 redis 的文档,这种结构在 key 的数量很大(超过 255 个以上,有相关配置)时效率开始下降。
层次更多以及 key 的数量不一定的结构,可以参考 full-text-index 的反向索引方案 object-id: [key, key, ...] key: [object-id, object-id, ...] 这等于是自己用逻辑实现了索引。
redis 这类 low level 东西的限制是:只能按 key 来查,没有 key 查询效率就很糟糕。这是坏事(不理解的话,就觉得不好用),同时也是好事(这种限制,显式地表达了索引逻辑,即,没建索引就查询不了)。