作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用 Cassandra 来存储一个计数器。例如给定页面被查看了多少次。
计数器永远不会递减。计数器的值不需要精确,但随着时间的推移应该是精确的。
我的第一个想法是将值存储为一列,然后读取当前计数,将其加一,然后将其放回。但是,如果另一个操作也试图增加计数器,我认为最终值就是一个带有最新时间戳的。
另一个想法是将每个页面加载存储为 CF 中的一个新列。然后我就可以运行 get_count()
在该键上并获取列数。通读documentation ,看来这根本不是一个非常有效的操作。
我是否错误地处理了问题?
最佳答案
计数器已添加到 Cassandra 0.8
使用 incr 方法将列的值增加 1。
[default@app] incr counterCF [ascii('a')][ascii('x')];
Value incremented.
[default@app] incr counterCF [ascii('a')][ascii('x')];
Value incremented.
CounterColumn counter = new CounterColumn();
ColumnParent cp = new ColumnParent("page_counts_by_minute");
counter.setName(ByteBufferUtil.bytes(bucketByMinute.format(r.date)));
counter.setValue(1);
c.add(ByteBufferUtil.bytes( bucketByDay.format(r.date)+"-"+r.url)
, cp, counter, ConsistencyLevel.ONE);
关于cassandra - 如何在 Cassandra 中增加计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3558844/
我是一名优秀的程序员,十分优秀!