我正在玩各种NoSQL数据库(主要是redis和couchdb),并遇到了一个问题:
如果我像这样保存用户数据:
SET user:5 "{name: \"foobar\", age: 26}"
我总是可以使用GET user:5
检索它。但是,如果我不知道用户的ID,但确实知道他们的name
,并想查询id
我们正在讨论的一些想法涉及与另一个SET usernames:foobar "5"
同时发送SET
,但由于它们与RDBMS不相关,因此草率代码可能会意外地导致数据不匹配。 / p>
是否有处理此类程序的“标准”方式?
答案 0 :(得分:1)
您所描述的方法几乎是Redis的标准方法。
您实际上是在创建用户名索引。其他系统会自动为您创建此类索引,并在数据更改时对其进行维护。使用Redis,您必须自己完成。
是的,草率代码会导致数据不匹配。这是每次非规范化或创建索引时支付的成本。你只需要小心它。