批量插入数据时如何在Cassandra中给出ttl?

阿迪

您好,我正在使用 Cassandra 来保存用户数据。我只想将用户的数据存储 24 小时,所以我提供了 24 小时的 ttl。对于每个用户,有多个条目。所以我想为每个用户批量插入数据,而不是多次调用数据库。我正在使用 Cassandra 操作来提供 ttl 。我可以为单个记录提供 ttl。批量插入数据时如何提供ttl

public class CustomizedUserFeedRepositoryImpl<T> implements CustomizedUserFeedRepository<T> {


private CassandraOperations cassandraOperations;

@Autowired
CustomizedUserFeedRepositoryImpl(CassandraOperations cassandraOperations){
    this.cassandraOperations = cassandraOperations;

}

@Override
public <S extends T> S save(S entity, int ttl){
    InsertOptions insertOptions;
    if(ttl == 0) {
        insertOptions =  InsertOptions.builder().ttl(Duration.ofHours(24)).build();
    } else {
        insertOptions = InsertOptions.builder().ttl(ttl).build();
    }
    cassandraOperations.insert(entity,insertOptions);
    return entity;
}

@Override
public void saveAllWithTtl(java.lang.Iterable<T> entities, int ttl){
    entities.forEach(entity->{
        save(entity,ttl);
    });
}

}

如您所见,我必须遍历列表 make 并为每个记录进行数据库调用。批量操作 cassandraOperations.batchOps().insert() 只接受对象列表。使用 batchops() 功能时如何为每条记录设置 ttl ?

埃尔卡亚84
   /**
     * Add a collection of inserts with given {@link WriteOptions} to the batch.
     *
     * @param entities the entities to insert; must not be {@literal null}.
     * @param options the WriteOptions to apply; must not be {@literal null}.
     * @return {@code this} {@link CassandraBatchOperations}.
     * @throws IllegalStateException if the batch was already executed.
     * @since 2.0
     */
    CassandraBatchOperations insert(Iterable<?> entities, WriteOptions options);

你可以使用insert(Iterable<?> entities, WriteOptions options)方法

@EqualsAndHashCode(callSuper = true)
public class WriteOptions extends QueryOptions {

private static final WriteOptions EMPTY = new WriteOptionsBuilder().build();

private final Duration ttl;
private final @Nullable Long timestamp;

batchOperations.insert(entity, WriteOptions.builder().ttl(20).build());

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用cqlengine在cassandra中批量插入/批量插入?

来自分类Dev

如何在Oracle中批量插入

来自分类Dev

如何在MySQL中批量插入记录?

来自分类Dev

如何在将Tweet数据插入Apache Cassandra db时遇到错误?

来自分类Dev

如何在将Tweet数据插入Apache Cassandra db时遇到错误?

来自分类Dev

如何在mongodb中批量获取数据

来自分类Dev

Django:如何在事务中包装批量更新/插入操作?

来自分类Dev

VBA如何在SQL批量语法中插入动态参数

来自分类Dev

如何使用Python将批量数据有效地插入Cassandra?

来自分类Dev

如何在将数据插入到Hive表中时转义html代码数据

来自分类Dev

如何批量插入SQLITE数据库?

来自分类Dev

如何在Cassandra中插入无列的空值

来自分类Dev

PyMongo:如何在MongoDB中批量更新巨大的JSON数据

来自分类Dev

如何在没有批量复制程序 (BCP) 的情况下批量插入 Azure SQL 数据库?

来自分类Dev

如何在子div中插入数据?

来自分类Dev

如何在Wordpress中插入数据?

来自分类Dev

如何在Rails中多次插入数据

来自分类Dev

如何在React js中插入数据

来自分类Dev

如何在REACT中从表单插入数据

来自分类Dev

如何在XML中插入数据

来自分类Dev

如何在Rails中多次插入数据

来自分类Dev

如何在R中插入数据

来自分类Dev

如何在 Python 中插入表格数据?

来自分类Dev

如何在枚举字段中插入数据?

来自分类Dev

如何在文档存在时将文档批量插入 ElasticSearch 而不更新

来自分类Dev

当np.nan时,sqlalchemy orm从pandas数据框中批量插入

来自分类Dev

如何在Mongoid中使用时间字符串批量插入数据

来自分类Dev

将数据插入Cassandra时出错

来自分类Dev

插入数据时如何在Spring-mongodb中重命名字段名称?

Related 相关文章

热门标签

归档