【问题标题】:Seamlessly updating a large collection of Redis keys and values无缝更新大量 Redis 键和值
【发布时间】:2015-09-08 13:37:22
【问题描述】:

我在某个命名空间中有大量 Redis 键/值对(即键有一些前缀)。此集合的来源会定期更新;它大多保持不变,但添加了一些键,删除了一些键,还有一些更新了值。

什么是更新 Redis 中的集合而不会使使用该集合的应用程序停机的有效方法?更新不需要是原子的。

【问题讨论】:

  • 只在后台执行数据同步有什么问题?
  • @SergioTulentsev 通过“数据同步”,这听起来像是在暗示您了解集合的新旧版本之间的差异。我添加了这种方法作为答案。它需要遍历整个新旧集合。由于更新后旧集合无关紧要,我想知道是否有更好的方法。
  • 或者,您可以将新集合上传到新前缀(“mycollection:v0034:*”)。上传完成后,切换应用程序以使用新前缀并从旧前缀中删除现已过时的键
  • 您可以在不计算增量的情况下进行数据同步:只需获取您的新集合并推送具有大致等于time between syncs + duration of data sync 的 TTL 值。这将处理新的和更新的密钥。并且已删除的密钥将在过期时自行删除(下一次同步后不久)。
  • @SergioTulentsev 使用 TTL 很聪明,听起来很方便,但如果出现问题,可能很难变得健壮。这就像在您的旧宇宙飞船上启动自毁序列,然后继续构建改进的模型。如果一切按计划进行,它会实现干净的过渡。 :-)

标签: redis


【解决方案1】:
  1. 计算现有 Redis 集合和更新后的源集合之间的同步增量(添加、删除、更新)。
  2. 使用同步增量更新 Redis 集合。

根据源更新的频率,您可能希望将现有 Redis 集合的本地副本保留在内存中,以加快第 1 步并减轻 Redis 服务器的负载。

【讨论】:

    猜你喜欢
    • 2015-06-03
    • 1970-01-01
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 2019-08-22
    • 2020-06-22
    • 2019-12-31
    相关资源
    最近更新 更多