gpt4 book ai didi

Redis 和对象版本控制

转载 作者:IT王子 更新时间:2023-10-29 06:04:52 31 4
gpt4 key购买 nike

人们如何应对 Redis 对象架构的变化 - 添加或删除对象的属性?

最佳答案

分享我自己的经验(一年前的项目,每秒有数千个用户请求)。

通常,我有两种情况:

  1. 向现有结构添加新信息(例如,向用户发送“电子邮件”字段)
  2. 删除或更改现有结构中的现有值(例如,更改某些字段的格式)
  3. 从数据库中删除内容

对于 1,我一直遵循简单的策略:优雅地降级,例如如果用户没有电子邮件记录 - 将其视为空电子邮件。一直在工作。

对于 2 和 3,这取决于是否可以在发布之前或之后更改/计算/修复数据。我在数据库上运行一个为我完成所有工作的工作,对于几百万个 key ,它需要相当长的时间(分钟)。如果该作业只能在我发布新代码后运行 - 那么优雅地降级会有很大帮助,我只需发布然后运行该作业。

PS:如果你在redis中影响了很多键那么使用http://redis.io/topics/pipelining是非常重要的节省大量时间。

  1. 列出管道中所有受影响的(即您想以任何方式修复它们)键或记录
  2. 对他们做任何你想做的事。如果可能的话,也尝试将写入操作排队到管道中
  3. 将排队的操作发送到 redis。

为您的结构制作索引对您来说也很重要。我用 id 保存集合。然后我简单地迭代 SMEMBERS(set_with_ids)。这比迭代 KEYS 命令要好得多。

关于Redis 和对象版本控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5565302/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com