我想在Cassandra数据库中进行递增操作

简而言之

使用计数器类型。

解释

我想增加/减少

在中文中常见的例子包括PV(页面浏览量)、推文数和收藏数。
经常我们都需要简单地保留这些数据的列,对吧?

比如,我们创建一个类似下面的表(列族)。

CREATE TABLE page_view_counts(
  pv int,
  url_name varchar,
  page_name varchar,
  PRIMARY KEY (url_name, page_name)
);

听说你对MySQL很熟悉。
你觉得写下面这样的查询语句没问题吧?

UPDATE page_view_counts
 SET pv = pv + 1
 WHERE url_name='www.datastax.com' AND page_name='home';

太甜了。CQL并不是那么友善。

UPDATE page_view_counts SET pv = pv + 1 WHERE url_name='www.datastax.com' AND page_name='home';
-> Bad Request: Invalid operation (pv = pv + 1) for non counter column legion

您生气了。
这样做只是为了增加 pv 值,就需要额外地选择当前的 pv 值。

因此,让我们像错误信息中提到的那样使用一个名为 counter 的数据类型。

CREATE TABLE counterks.page_view_counts(
  pv counter, // コレ
  url_name varchar,
  page_name varchar,
  PRIMARY KEY (url_name, page_name)
);

再一次。

UPDATE page_view_counts SET pv = pv + 1 WHERE url_name='www.datastax.com' AND page_name='home';
-> OK

请参考

广告
将在 10 秒后关闭
bannerAds