Aerospike提供一套类SQL操作,和Mysql语法极其相似(命令解析参考注释),在安装aerospike的服务器上,通过aql --help 可以查看系统提供的帮助文档,里面还有很多DEMO语句。然后通过aql -h ip -p port 连上服务器(直接aql默认连接127.0.0.1 3000)。

图1 连接aerospike客户端

AS常用命令

  • 登录AS:先登录到服务器上,然后直接输入命令:aql
    连接:aql -p 3000 -h 192.168.0.1

  • 显示所有命名空间:show namespaces(namespace类似mysql的db)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    aql> show namespaces
    +------------+
    | namespaces |
    +------------+
    | "ns1" |
    | "ns11" |
    +------------+
    [127.0.0.1:3000] 2 rows in set (0.002 secs)

    OK
  • 显示所有表(集合):show sets(sets类似mysql中的table,相当于mysql中的show tables)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    aql> show sets
    +-------------+--------+--------------+------+------+-------------+--------+-----------+------+
    | disable-eviction | ns | set-enable-xdr | objects | stop-writes-count | set | memory_data_bytes | truncate_lut | tombstones |
    +-------------+--------+--------------+------+------+-------------+--------+------------+-----+
    | "false" | "ns1" | "use-default" | "4" | "0" | "tablename" | "82" | "0" | "0" |
    | "false" | "ns1" | "use-default" | "2" | "0" | "chiron" | "68" | "388060100729" | "0" |
    | "false" | "ns1" | "use-default" | "0" | "0" | "sleipnir" | "0" | "0" | "0" |
    | "false" | "ns1" | "use-default" | "17"| "0" | "retina" | "6267" | "0" | "0" |
    | "false" | "ns11" | "use-default" | "1" | "0" | "chiron2" | "20" | "0" | "0" |
    +------------+--------+----------------+-----+------+-------------+--------+------------+-----+
    [127.0.0.1:3000] 5 rows in set (0.002 secs)

    OK
  • 显示所有列(字段):show bins(bins列相当于mysql table中的column)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    aql> show bins
    +-------+--------+-------+-----------+
    | quota | bin | count | namespace |
    +-------+--------+-------+-----------+
    | 32768 | "DATA" | 1 | "ns1" |
    | 32768 | "DATA" | 1 | "ns11" |
    +-------+--------+-------+-----------+
    [127.0.0.1:3000] 2 rows in set (0.001 secs)

    OK
  • 查询信息:select * from 命名空间[.表名 where PK='主键名']

    • 查询命名空间下的所有数据
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    aql> select * from ns1;
    +------------------------------------------------------------------+--------+------------+-----+
    | DATA | pass | name | age |
    +------------------------------------------------------------------+--------+------------+-----+
    | KEY_ORDERED_MAP('{"heart":"1651720420500", "img_scanned":"53"}') | | | |
    | | 123456 | "zhangsan" | 34 |
    +------------------------------------------------------------------+--------+------------+-----+
    24 rows in set (0.037 secs)

    OK
    • 查询命名空间下集合中数据
    1
    2
    3
    4
    5
    6
    7
    8
    9
    aql> select * from ns1.demo;
    +--------+------------+-----+
    | pass | name | age |
    +--------+------------+-----+
    | 123456 | "zhangsan" | 34 |
    +--------+------------+-----+
    1 row in set (0.038 secs)

    OK
    • 带key查询:根据PK查询,相当于mysql表中的主键,AS还支持索引查询,但不支持不带索引的bin查询
    1
    2
    3
    4
    5
    6
    7
    8
    9
    aql> select * from ns1.demo where PK="test_key";
    +--------+------------+-----+
    | pass | name | age |
    +--------+------------+-----+
    | 123456 | "zhangsan" | 34 |
    +--------+------------+-----+
    1 row in set (0.001 secs)

    OK
    • 没建索引查询
    1
    2
    3
    4
    aql> select * from ns1.demo where name="zhangsan";
    0 rows in set (0.000 secs)

    Error: (201) AEROSPIKE_ERR_INDEX_NOT_FOUND
    • 创建索引并查询
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    aql> create index idx_name on ns1.demo(name) STRING
    OK, 1 index added.

    aql> select * from ns1.demo where name="zhangsan";
    +--------+------------+-----+
    | pass | name | age |
    +--------+------------+-----+
    | 123456 | "zhangsan" | 34 |
    +--------+------------+-----+
    1 row in set (0.001 secs)

    OK

AS常用操作

1.插入数据

1
insert into 命名空间.表名(PK,name,password) VALUES('key1','abc','123')

比如执行如下命令:

1
insert into testMemory.demo(PK,name,password) VALUES('key1','abc','123')

2.查看所有列

1
show bins

查看所有行

查看所有行,通过执行命令:show sets

1
show sets

根据PK查询

1
select * from ns1.demo where PK='test_key'

根据PK删除

1
delete from ns1.demo where PK='test_key'