【发布时间】:2013-09-06 17:40:23
【问题描述】:
我在我的项目中使用了cassandra,并使用hector与cassandra连接,我在keyspace中定义了一个列族用户,用户中有一个列名“reputation”,现在我想增加用户的声誉,如何做?你能帮帮我吗?
【问题讨论】:
我在我的项目中使用了cassandra,并使用hector与cassandra连接,我在keyspace中定义了一个列族用户,用户中有一个列名“reputation”,现在我想增加用户的声誉,如何做?你能帮帮我吗?
【问题讨论】:
您可以使用计数器创建列族:
ColumnFamilyDefinition cfDef = HFactory.createColumnFamilyDefinition(keyspaceName, "UserCounters");
cfDef.setKeyValidationClass(ComparatorType.UTF8TYPE.getClassName());
cfDef.setComparatorType(ComparatorType.UTF8TYPE);
cfDef.setDefaultValidationClass(ComparatorType.COUNTERTYPE.getClassName());
cfDef.setColumnType(ColumnType.STANDARD);
cfDef.setKeyspaceName(keyspaceName);
那么,只要您想提高用户声誉,就可以增加它
int amountToIncrease = 1;
HCounterColumn<String> hcol = HFactory.createCounterColumn("reputation", amountToIncrease);
Mutator<String> mutator = HFactory.createMutator(keyspace, StringSerializer.get());
mutator.addCounter("Bob Smith", "UserCounters", hcol);
mutator.execute();
这样,每个用户就有一行,其中有一个声誉计数器。
UserCounters {
username: {
reputation: <counter>
},
username2: {
reputation: <counter>
}
}
然后,如果您想为该用户添加其他计数器(例如“cmets”或“pageviews”或其他内容),您可以轻松添加它
【讨论】: