【问题标题】:Updating only TTL in cassandra在 cassandra 中仅更新 TTL
【发布时间】:2015-11-29 14:51:06
【问题描述】:

在 python 中运行model.update(args, kwargs) 时,如果数据没有不同,它实际上并没有进行任何更改,对吗?如果是这样,它会更新 TTL 吗?如果没有,我们怎样才能让它重置 TTL?

用例:

我们有一个模型可以存储扭曲的循环信息,并且我们有一个 10 秒的 TTL。该程序设置为每 2 秒自动检查一次配置,如果没有,那么我们希望将该数据从活动循环中删除。这是它变得棘手的地方,一旦为特定循环设置数据,它就很少更改。

如果有帮助,我可以发布模型和其他信息。

【问题讨论】:

    标签: python cassandra cassandra-2.0


    【解决方案1】:

    当您在 Cassandra 中执行插入或更新时,新值会覆盖旧值,即使它是相同的值。这是因为 Cassandra 在存储新数据之前不会读取现有数据。每次写入只是一个追加操作,Cassandra 不知道新值是否与旧值相同。

    当您进行读取时,Cassandra 会找到最近的写入,即当前值。因此,如果您的插入或更新设置了 TTL,那么该 TTL 将覆盖您插入/更新的列的任何先前 TTL。

    因此,如果您正在写入 TTL 为 10 秒的数据,那么如果您希望它再停留 10 秒,则需要在 10 秒结束之前再次写入相同的数据。

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多