人们如何应对redis对象模式的更改 - 在对象中添加或删除属性?
答案 0 :(得分:3)
根据我自己的经验分享(一年的项目,每秒有数千个用户请求)。
通常,我有两种情况:
对于1,我一直遵循简单的策略:正常降级,例如如果用户没有电子邮件记录 - 将其视为空电子邮件。一直都在工作。
对于2和3,取决于是否可以在发布之前或之后更改/计算/修复数据。我在数据库上运行一项工作,为我完成所有工作,几百万个密钥需要相当长的时间(分钟)。如果只有在我发布新代码之后才能运行该作业 - 那么优雅地降级会有很大帮助,我只需发布然后运行该作业。
PS:如果你在redis中影响了很多键,那么使用http://redis.io/topics/pipelining非常重要。节省大量时间。
为您的结构制作索引也非常重要。我保留有ID的集合。然后我简单地遍历SMEMBERS(set_with_ids)。 它比迭代KEYS命令要好得多。
答案 1 :(得分:0)
对于极其简单的版本控制,您可以使用不同的数据库编号。在两个版本之间几乎所有东西都相同的情况下,这可能是非常有限的,但如果它适合你,它也是一种非常干净的方式。