cassandra命令

来源:互联网 发布:手机剪辑mp3软件 编辑:程序博客网 时间:2024/04/30 06:45

首先使用cassandra-cli 进入命令行:$ bin/cassandra-cli -host 192.168.0.101
1.创建keyspace

CREATE KEYSPACE usertable with placement_strategy = 'org.apache.cassandra.locator.SimpleStrategy' and strategy_options = {replication_factor:2};

2.创建列簇

create column family data with comparator=UTF8Type and default_validation_class=UTF8Type and key_validation_class=UTF8Type;

3.创建一个计算器的列簇

计数器列族主要包含计数器列,这个列是一个64位的有符号数的值,可供客户端使用,采用递增或是递减的方式提供给客户端使用。计数器列跟踪最近的值或是计算使用它的值,并不断更新自己,你必须创建一个列族专门给客户端做计数用。

我们同时创建一个使用该计数器的列族,并使这个列族的CounterColumnType的default_validation_class默认指向该计数器。比如:

[default@demo] CREATE COLUMN FAMILYpage_view_counts

WITH default_validation_class=CounterColumnType

AND key_validation_class=UTF8Type AND comparator=UTF8Type;

插入一行数据时和计数器列同时更新(与计数器的初始值设置为0)

[default@demo] INCR page_view_counts['www.datastax.com'][home]BY 0;

计算器增量:

[default@demo] INCR page_view_counts['www.datastax.com'][home]BY 1;

4.插入一行或是一列数据

面的例子说明了使用set指令为user列族插入列值。在这个例子中我们采用key为bobbyjo,在bobbyjo上插入了很多列,它们属于users这个列族,记住bobbyjo只是一行的标识。注意我们每次只能插入一列。

[default@demo] SET users['bobbyjo']['full_name']='RobertJones';

 

[default@demo] SET users['bobbyjo']['email']='bobjones@gmail.com';

 

[default@demo] SET users['bobbyjo']['state']='TX';

 

[default@demo] SET users['bobbyjo']['gender']='M';

 

[default@demo] SET users['bobbyjo']['birth_year']='1975';

 

在接下来的例子中我们采用yomama作为行的key,在users这个列族中插入若干列和值。

[default@demo] SET users['yomama']['full_name']='CathySmith';

 

[default@demo] SET users['yomama']['state']='CA';

 

[default@demo] SET users['yomama']['gender']='F';

 

[default@demo] SET users['yomama']['birth_year']='1969';

 

在下面的例子中,我们为创blog_entry列族建一个key为yomama的列:

[default@demo] SET blog_entry['yomama'][timeuuid()]= 'I love my new shoes!';

5.读取行和列的数据

在Cassandra客户端中我们使用GET指令从指定的列族中读取数据。

采用List指令冲指定的列族中读取相关的列值出来(默认是返回100行的数据)。

下面的例子就是从users列族中返回100行的数据:

[default@demo] LIST users;

Cassandra内部默认采用十六进制的字节存放数据。假如你没有指定行key的校验类型,那么列的比较器和校验器都是采用列族定义的默认值,Cassandra客户端将按照默认的的方式为行插入数据,不管是行key还是列名,还是列值都是一样的采用十六进制的方式(同样数据也是以十六进制的方式返回)。

想输入和返回我们可读的数据格式,我们就必须指定编码格式,Cassandra可以提供的编码格式有:

  • ascii
  • bytes
  • integer (a generic variable-length integer type)
  • lexicalUUID
  • long
  • utf8

比如以下例子采用UTF-8的格式返回数据:

[default@demo] GET users[utf8('bobby')][utf8('full_name')];

你也可以通过ASSUME指令在客户端的整个会话过程中采用那一种数据格式,比如下面的例子中采用ASCII-encoded作为数据返回值。

[default@demo] ASSUME users KEYS AS ascii;

[default@demo] ASSUME users COMPARATOR ASascii;

[default@demo] ASSUME users VALIDATOR ASascii;

6.设置一过期的列

当你在Cassandra设置一个列时,你可以指定它的过期时间,或是他的生命周期属性time-to-live。

比如:我们的用户跟踪优惠证券的过期时限是10天,我们就能定义一个优惠卷的列过期时间指定为10天,如:

[default@demo] SET users['bobbyjo']

[utf8('coupon_code')] = utf8('SAVE20') WITHttl=864000;

那么过了十天或是864000秒,该列将不可读,然而它的值并没有从磁盘中删除知道Cassandra完成压缩和收缩。

7.列的索引

Cassandra客户端可以创建第二索引(列值的索引),当创建该列族是你可以指定它的第二索引或是在后期使用UPDATE COLUMN FAMILY修改它的索引。

比如在users列族中的birth_year列添加第二索引:

[default@demo] UPDATE COLUMN FAMILY users

WITH comparator = UTF8Type

AND column_metadata = [{column_name:birth_year, validation_class: LongType, index_type: KEYS}];

因为在birth_year添加了第二索引,所以它的值可以作为条件直接查询。

[default@demo] GET users WHERE birth_date =1969;

8.删除行和列

Cassandra提供DEL指令删除行或是列(或是子列)

比如在uses列族中的'yomama'行删除coupon_code列:

[default@demo] DEL users ['yomama']['coupon_code'];

 

通过以下指令验证删除的情况

[default@demo] GET users ['yomama'];

 

或是直接删除整行

[default@demo] DEL users ['yomama'];

9.删除列簇和keyspace

Cassandra提供了类似关系数据库一样删除表和数据库的方式删除列族和keyspaces,以下的例子显示如何通过Drop指令删除users列族和名为demo的keyspace。

[default@demo] DROP COLUMN FAMILY users;

 

[default@demo] DROP KEYSPACE demo;

0 0
原创粉丝点击