与nosql重复的信息?

时间:2012-02-28 15:32:20

标签: nosql redis

我正在使用Redis作为nosql数据库(并且非常享受它)但是在某些情况下它不是更方便(我知道并非每个数据模型都可以与nosql一起使用,但仍然......)。登记/> 我想知道是否有一种正确的方法可以在Redis中执行以下操作,或者我最终需要使用RDMS。

假设我有2个objets:

- User
- Asset

资产可以是“平面”,“建筑物”或“房屋”。

我使用名为“assets”的redis列表来收集资产,如:

assets = [asset:1, asset:2, ....]

每个资产都是一个哈希:

asset:1 = {type: flat, value: 150000$}

如何获取“flat”类型的所有资产列表?

最简单的方法是遍历资产列表并检查每个资产的类型,这是线性的,因此看起来非常好。

有更好的解决方案吗?

有一个新列表可能是有用的:“flats”将包含类型为“flat”的资产的引用,但是这个新闻列表会导致开销,因为我们需要确保它是同步的。

flats = [asset:1, asset:5, ...]

但是这会导致数据复制......这很糟糕......这仍然是使用nosql的方法吗?

还有其他建议吗?

1 个答案:

答案 0 :(得分:4)

我通常会构建一个包含索引的第二个键。因此,当您编写新资产时,您可以将其写入您的资产集和特定资产类型集。这是开销,但它与你在其他数据库中遇到的开销相同,它只是在前面。索引总是需要额外的写入,Redis只是明显地发生了这种情况。

另外,我只会将id存储在您的“资产”集中,而不是资产:1,只存储1