这仅仅是一个Cassandra CLI使用方法的清单。
Cassandra CLI 客户端用于处理集群中基本的数据定义(DDL)和数据维护(DML)。其处于/usr/bin/cassandra-cli
,如果是试用包安装,或者是$CASSANDRA_HOME/bin/cassandra-cli
,如果使用二进制文件安装。
Starting the CLI
使用cassandra-cli
-host
-port
命令启动 Cassandra CLI,他将会连接cassandra.yaml
文件中定义的集群名称,默认为“Test Cluster”。
如果你有一个但节点的集群,则使用以下命令:
$ cassandra-cli -host localhost -port 9160
如果想连接多节点集群中的一个节点,可以使用以下命令:
$ cassandra-cli -host 110.123.4.5 -port 9160
或者,可以直接执行以下命令:
$ cassandra-cli
登录成功之后,可以看到:
Welcome to cassandra CLI. Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit.
你必须指定连接一个节点:
[default@unknown]connect localhost/9160;
Creating a Keyspace
[default@unknown] CREATE KEYSPACE demo;
下面的一个例子,创建一个叫demo的Keyspace,并且复制因子为1,使用SimpleStrategy
复制替换策略。
[default@unknown] CREATE KEYSPACE demo with placement_strategy ='org.apache.cassandra.locator.SimpleStrategy' and strategy_options = [{replication_factor:1}];
你可以使用SHOW KEYSPACES
来查看所有系统的和你创建的Keyspace
Use a keyspace
[default@unknown] USE demo;
Creating a Column Family
[default@demo] CREATE COLUMN FAMILY users WITH comparator = UTF8Type AND key_validation_class=UTF8Type AND column_metadata = [ {column_name: full_name, validation_class: UTF8Type} {column_name: email, validation_class: UTF8Type} {column_name: state, validation_class: UTF8Type} {column_name: gender, validation_class: UTF8Type} {column_name: birth_year, validation_class: LongType} ];
我们使用demo keyspace创建了一个column family,其名称为users,并包括5个静态列:full_name,email,state,gender,birth_year.comparator, key_validation_class和validation_class,用于设置;列名称,行key的值,列值的编码。comparator还定义了列名称的排序方式。
下面命令创建一个名称为 blog_entry的动态column family,我们不需要定义列,而由应用程序稍后定义。
[default@demo] CREATE COLUMN FAMILY blog_entry WITH comparator = TimeUUIDType AND key_validation_class=UTF8Type AND default_validation_class = UTF8Type;
Creating a Counter Column Family
[default@demo] CREATE COLUMN FAMILY page_view_counts WITH default_validation_class=CounterColumnType AND key_validation_class=UTF8Type AND comparator=UTF8Type;
插入一行和计数列:
[default@demo] INCR page_view_counts['www.datastax.com'][home] BY 0;
增加计数:
[default@demo] INCR page_view_counts['www.datastax.com'][home] BY 1;
Inserting Rows and Columns
以下命令以一个特点的行key值插入列到users中
[default@demo] SET users['bobbyjo']['full_name']='Robert Jones'; [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';
更新数据: set users['bobbyjo']['full_name'] = ‘Jack’;
获取数据: get users['bobbyjo'];
get命令用法参考:API#get_slice
查询数据: get users where gender= ‘M’;
下面命令在 blog_entry中创建了一行,其行key为“yomama”,并指定了一列:timeuuid()的值为 ‘I love my new shoes!’
[default@demo] SET blog_entry['yomama'][timeuuid()] = 'I love my new shoes!';
Reading Rows and Columns
使用List命令查询记录,默认查询100条记录
[default@demo] LIST users;
Cassandra 默认以16进制数组的格式存储数据 为了返回可读的数据格式,可以指定编码:
- ascii
- bytes
- integer (a generic variable-length integer type)
- lexicalUUID
- long
- utf8
例如:
[default@demo] GET users[utf8('bobby')][utf8('full_name')];
你也可以使用
ASSUME
命令指定编码,例如,指定行key,行名称,行值显示ascii码格式:[default@demo] ASSUME users KEYS AS ascii; [default@demo] ASSUME users COMPARATOR AS ascii; [default@demo] ASSUME users VALIDATOR AS ascii;
Setting an Expiring Column
例如,假设我们正在跟踪我们的用户,到期后10天的优惠券代码。我们可以定义coupon_code的列和设置该列的过期日期。例如:
[default@demo] SET users['bobbyjo'] [utf8('coupon_code')] = utf8('SAVE20') WITH ttl=864000;
自该列被设置值之后,经过10天或864,000秒后,其值将被标记为删除,不再由读操作返回。然而,请注意,直到Cassandra的处理过程完成,该值才会从硬盘中删除。
Indexing a Column
给birth_year添加一个二级索引:
[default@demo] UPDATE COLUMN FAMILY users WITH comparator = UTF8Type AND column_metadata = [{column_name: birth_year, validation_class: LongType, index_type: KEYS}];
由于该列被索引了,所以可以直接通过该列查询:
[default@demo] GET users WHERE birth_date = 1969;
Deleting Rows and Columns
删除yomama索引的coupon_code列:
[default@demo] DEL users ['yomama']['coupon_code']; [default@demo] GET users ['yomama'];
或者删除整行:
[default@demo] DEL users ['yomama'];
Dropping Column Families and Keyspaces
[default@demo] DROP COLUMN FAMILY users; [default@demo] DROP KEYSPACE demo;
For help
[default@unknown]help;
查看某一个命令的详细说明:
[default@unknown] help SET;
To Quit
[default@unknown]quit;
To Execute Script
bin/cassandra-cli -host localhost -port 9160 -f script.txt