我一直在尝试Redis的,我真的很喜欢它带来的表的可扩展性。但是,我不知道如何来处理数据的变化结构的系统中已有的生产。

例如,让我说,我收集关于用户的信息,并予使用的user_id作为密钥,和倾倒关于用户的其他数据作为逗号分隔值。

user_id: name, email, etc.

现在,说后约10万条记录,我意识到我需要查询的email - 我怎么会现在就现有数据的快照,并为它创建一个新的指数

有帮助吗?

解决方案

这是我的Redis的了解,这将需要一些东西,Redis的目的不是要去做。虽然所有的记录(使用键*),然后更改数据的顺序,并作出新的密钥,你将不得不循环。我个人会建议使用一个列表,而不是逗号分隔字符串。在列表中,你可以从里面Redis的重新排序。甲Redis的列表如下所示:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something

我建立,其中我遇到同样的问题的应用程序。我解决它具有对所有用户的信息列表,然后与用户与用户的id的值电子邮件的关键。所以,我的数据库将是这样的:

"Colum" => [0] c.mcgaley@gmail.com
            [1] password
            [2] Something
"c.mcgaley@gmail.com" => "Colum"

所以,我可以查询ID或电子邮件,仍然可以得到我所需要的信息。

对不起,我是不是能够直接回答你的问题。只是希望这有助于。

其他提示

使用CSV如果你想支持的变化是不是一个好主意。您需要使用串行器,处理缺少/新值,如果一切都在一个密钥,或者您可以使用Redis的哈希值,它给你命名的子项。您可以添加任何一种方式/用唯一的要求删除字段是你的代码知道该怎么做,如果它不读取新值的记录。

要通过电子邮件允许查找需要添加的索引 - 基本上与用户ID作为值的每个电子邮件一个密钥(或列表)。您将需要获得所有按键一次,然后确保你更新电子邮件时改变填充此索引。

您可以遍历所有密钥,并将它们存储与不同的ID,但是这可能是更多的麻烦比它的价值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top