数据操作

子命令功能
set设置单条数据
multi_set设置同一HashKey下的多条数据
get获取单条数据
multi_get通过指定多个SortKey,获取同一HashKey下的多条数据
multi_get_range通过指定SortKey的查询范围和过滤条件,获取同一HashKey下的多条数据
multi_get_sortkeys获取同一HashKey下的所有SortKey
del删除单条数据
multi_del通过指定多个SortKey,删除同一HashKey下的多条数据
multi_del_range通过指定SortKey的查询范围和过滤条件,删除同一HashKey下的多条数据
incr原子增减操作
check_and_set原子CAS操作
check_and_mutate原子CAS扩展版本
exist查询某条数据是否存在
count获取同一HashKey下的SortKey的个数
ttl查询某条数据的TTL(Time To Live)时间,返回剩余的live时间,单位为秒;返回Infinite表示没有TTL限制
hash计算键值的哈希值
hash_scan逐条扫描同一HashKey下的数据,可指定SortKey的查询范围和过滤条件,结果按照SortKey排序
full_scan对表进行全扫描,可指定HashKey和SortKey和Value的过滤条件,同一HashKey的结果按照SortKey排序,HashKey之间无顺序保证
copy_data将一个表的数据逐条插入到另外一个表,源表通过use命令指定,目标表通过-c-a命令执行,目标表可以在另外一个集群,详细用法参见Table迁移,可指定HashKey和SortKey和Value的过滤条件
clear_data将一个表的数据逐条删除,实际上就是先扫描数据,然后对每一条数据执行删除操作,可指定HashKey和SortKey和Value的过滤条件
count_data统计一个表的数据条数,可加-z选项统计数据大小,可指定HashKey和SortKey和Value的过滤条件

set

设置单条数据。

用法:

  1. USAGE: set <hash_key> <sort_key> <value> [ttl_in_seconds]

说明:

  • 写入数据的格式必须为hash_key+sort_key+value
  • ttl_in_seconds参数:如果指定,则设置该条数据的存活时间,单位为秒。示例:
  1. >>> set xiaomi cloud 000

multi_set

设置同一hash_key下的多条数据。

用法:

  1. USAGE: multi_set <hash_key> <sort_key> <value> [sort_key value...]

说明:

  • sort_key是pegasus定义的一种数据模型,详细信息参见:数据模型
  • 不同的sort_key名字必须不同,否则会输出“ERROR: duplicate sort key ”。示例:
  1. >>> multi_set xiaomi cloud0 000 cloud1 001

get

获取单条数据。

用法:

  1. USAGE: get <hash_key> <sort_key>

示例:

  1. >>> get xiaomi cloud

multi_get

通过指定多个SortKey,获取同一HashKey下的多条数据。

用法:

  1. USAGE: multi_get <hash_key> [sort_key...]

示例:

  1. >>> multi_get xiaomi cloud0 cloud1

multi_get_range

通过指定SortKey的查询范围和过滤条件,获取同一HashKey下的多条数据。

用法:

  1. USAGE: multi_get_range <hash_key> <start_sort_key> <stop_sort_key>
  2. [-a|--start_inclusive true|false] [-b|--stop_inclusive true|false]
  3. [-s|--sort_key_filter_type anywhere|prefix|postfix]
  4. [-y|--sort_key_filter_pattern str] [-n|--max_count num]
  5. [-i|--no_value] [-r|--reverse]

说明:

  • -a|—start_inclusive参数:指定是否包含StartSortKey,默认为true
  • -b|—stop_inclusive参数:指定是否包含StopSortKey,默认为false
  • -s|—sort_key_filter_type参数:指定SortKey的过滤类型,包括无过滤、任意位置匹配、前缀匹配和后缀匹配,默认无过滤
  • -y|—sort_key_filter_pattern参数:指定SortKey的过滤模式串,空串相当于无过滤
  • -n|—max_count参数:指定最多读取的数据条数
  • -i|—no_value参数:指定是否只返回HashKey和SortKey,不返回Value数据,默认为false
  • -r|—reverse参数:是否逆向扫描数据库,从后往前查找数据。但是查找得到的结果在list中还是按照SortKey从小到大顺序存放。从PegasusServer 1.8.0时开始支持示例:
  1. >>> multi_get_range xioami cloud0 cloud5 -a true -b true -s prefix -y str -n 100 -i false -r false

multi_get_sortkeys

获取同一HashKey下的所有SortKey。

用法:

  1. USAGE: multi_get_sortkeys <hash_key>

示例:

  1. >>> multi_get_sortkeys xiaomi

del

删除单条数据。

用法:

  1. USAGE: del <hash_key> <sort_key>

示例:

  1. >>> del xiaomi cloud0

multi_del

通过指定多个SortKey,删除同一HashKey下的多条数据。

用法:

  1. USAGE: multi_del <hash_key> <sort_key> [sort_key...]

示例:

  1. >>> multi_del del xiaomi cloud0 cloud1

multi_del_range

通过指定SortKey的查询范围和过滤条件,删除同一HashKey下的多条数据。

用法:

  1. USAGE: multi_del_range <hash_key> <start_sort_key> <stop_sort_key>
  2. [-a|--start_inclusive true|false] [-b|--stop_inclusive true|false]
  3. [-s|--sort_key_filter_type anywhere|prefix|postfix]
  4. [-y|--sort_key_filter_pattern str] [-o|--output file_name]
  5. [-i|--silent]

说明:

  • -i|—silent参数:如果为true表示不打印删除时的日志
  • 其与参数,参见multi_get_range-说明示例:
  1. >>> multi_del_range xioami cloud0 cloud5 -a true -b true -s prefix -y str -n 100 -i false -r false

incr

原子增减操作。

用法:

  1. USAGE: incr <hash_key> <sort_key> [increment]

说明:

  • 操作数increment可以为正数也可以为负数,所以一个incr接口就可以实现原子增或者原子减,详情参照原子增减示例:
  1. >>> incr cloud0 xiaomi 1

check_and_set

原子CAS操作。

用法:

  1. USAGE: check_and_set <hash_key> [-c|--check_sort_key str]
  2. [-t|--check_type not_exist|not_exist_or_empty|exist|not_empty]
  3. [match_anywhere|match_prefix|match_postfix]
  4. [bytes_less|bytes_less_or_equal|bytes_equal|bytes_greater_or_equal|bytes_greater]
  5. [int_less|int_less_or_equal|int_equal|int_greater_or_equal|int_greater]
  6. [-o|--check_operand str] [-s|--set_sort_key str] [-v|--set_value str]
  7. [-l|--set_value_ttl_seconds num] [-r|--return_check_value]

说明:

  • 对比交换,最初是表示一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值。参照CAS操作示例:该命令表征检查hashKey为“cloud”,且存在sortKey为“90”时,set sortKey-value为“91”-“91”
  1. >>> check_and_set cloud -c 90 -t exist match_anywhere bytes_less int_less -s 91 -v 91 -r

check_and_mutate

原子CAS扩展版本,参见原子CAS扩展版本

用法:

  1. USAGE: check_and_mutate <hash_key> [-c|--check_sort_key str]
  2. [-t|--check_type not_exist|not_exist_or_empty|exist|not_empty]
  3. [match_anywhere|match_prefix|match_postfix]
  4. [bytes_less|bytes_less_or_equal|bytes_equal|bytes_greater_or_equal|bytes_greater]
  5. [int_less|int_less_or_equal|int_equal|int_greater_or_equal|int_greater]
  6. [-o|--check_operand str] [-r|--return_check_value]

exist

查询某条数据是否存在。

用法:

  1. USAGE: exist <hash_key> <sort_key>

示例:

  1. >>> exist xiaomi cloud0

count

获取同一HashKey下的SortKey的个数。

用法:

  1. USAGE: count <hash_key>

示例:

  1. >>> count xiaomi

ttl

查询某条数据的TTL(Time To Live)时间,返回剩余的live时间,单位为秒;返回Infinite表示没有TTL限制。

用法:

  1. USAGE: ttl <hash_key> <sort_key>

示例:

  1. >>> ttl xiaomi cloud

hash

查询某条数据的TTL(Time To Live)时间,返回剩余的live时间,单位为秒;返回Infinite表示没有TTL限制。

用法:

  1. USAGE: hash <hash_key> <sort_key>

示例:

  1. >>> hash xiaomi cloud

hash_scan

逐条扫描同一HashKey下的数据,可指定SortKey的查询范围和过滤条件,结果按照SortKey排序。

用法:

  1. USAGE: hash_scan <hash_key> <start_sort_key> <stop_sort_key> [-a|--start_inclusive true|false]
  2. [-b|--stop_inclusive true|false]
  3. [-s|--sort_key_filter_type anywhere|prefix]
  4. [-y|--sort_key_filter_pattern str]
  5. [-v|--value_filter_type anywhere|prefix|postfix|exact
  6. [-z|--value_filter_pattern str]
  7. [-o|--output file_name]
  8. [-n|--max_count num]
  9. [-t|--timeout_ms num]
  10. [-d|--detailed]
  11. [-i|--no_value]

说明:

  • -a|—start_inclusive参数:指定是否包含StartSortKey,默认为true
  • -b|—stop_inclusive参数:指定是否包含StopSortKey,默认为false
  • -s|—sort_key_filter_type参数:指定SortKey的过滤类型,包括无过滤、任意位置匹配、前缀匹配和后缀匹配,默认无过滤
  • -y|—sort_key_filter_pattern参数:指定SortKey的过滤模式串,空串相当于无过滤
  • -v|—value_filter_type参数:指定value过滤类型,包括任意位置匹配、前缀匹配、后缀匹配等
  • -z|—value_filter_pattern str参数:指定value的过滤模式串,空串相当于无过滤
  • -o|—output file_name参数:指定输出结果存入的文件名
  • -n|—max_count num参数:指定获取值的最大数量
  • -t|—timeout_ms num参数:指定获取数据的超时时间
  • -d|—detailed参数:输出数据的详细存储信息,包括app_id,partition_index,server_ip
  • -i|—no_value参数:不获取value值,仅输出hash_key和sort_key示例:
  1. >>> hash_scan xiaomi cloud00 cloud01

full_scan

对表进行全扫描,可指定HashKey和SortKey和Value的过滤条件,同一HashKey的结果按照SortKey排序,HashKey之间无顺序保证

用法:

  1. USAGE: full_scan [-h|--hash_key_filter_type anywhere|prefix|postfix]
  2. [-x|--hash_key_filter_pattern str]
  3. [-s|--sort_key_filter_type anywhere|prefix]
  4. [-y|--sort_key_filter_pattern str]
  5. [-v|--value_filter_type anywhere|prefix|postfix|exact
  6. [-z|--value_filter_pattern str]
  7. [-o|--output file_name]
  8. [-n|--max_count num]
  9. [-t|--timeout_ms num]
  10. [-d|--detailed]
  11. [-i|--no_value]

说明:

  1. >>> full_scan

copy_data

将一个表的数据逐条插入到另外一个表。

用法:

  1. USAGE: copy_data <-c|--target_cluster_name str> <-a|--target_app_name str> [-s|--max_split_count num]
  2. [-p|--partition num]
  3. [-b|--max_batch_count num]
  4. [-t|--timeout_ms num]
  5. [-h|--hash_key_filter_type anywhere|prefix|postfix]
  6. [-x|--hash_key_filter_pattern str]
  7. [-s|--sort_key_filter_type anywhere|prefix|postfix|exact]
  8. [-y|--sort_key_filter_pattern str]
  9. [-v|--value_filter_type anywhere|prefix|postfix|exact]
  10. [-z|--value_filter_pattern str]
  11. [-n|--no_overwrite] [-i|--no_value] [-g|--geo_data]

说明:

  • 源表通过use命令指定,目标表通过-c和-a命令执行,目标表可以在另外一个集群,详细用法参见Table迁移,可指定HashKey和SortKey和Value的过滤条件示例:
  1. >>> copy_data -c ClusterB -a TableB -t 10000

clear_data

将一个表的数据逐条删除,实际上就是先扫描数据,然后对每一条数据执行删除操作,可指定HashKey和SortKey和Value的过滤条件

用法:

  1. USAGE: clear_data [-p|--partition num]
  2. [-b|--max_batch_count num]
  3. [-t|--timeout_ms num]
  4. [-h|--hash_key_filter_type anywhere|prefix|postfix]
  5. [-x|--hash_key_filter_pattern str]
  6. [-s|--sort_key_filter_type anywhere|prefix|postfix|exact]
  7. [-y|--sort_key_filter_pattern str]
  8. [-v|--value_filter_type anywhere|prefix|postfix|exact]
  9. [-z|--value_filter_pattern str]
  10. [-f|--force]

说明:

  • -p|—partition num参数:指定删除的分片
  • -b|—max_batch_count num参数:指定一次性删除的最大数量
  • -f|—force参数:如果为true,则表示删除,否则无法删除并打印再次确认信息“ERROR: be careful to clear data!!! Please specify —force if you are determined to do”
  • 其余参数均为过滤条件,参见multi_get_range示例:
  1. >>> clear_data

count_data

统计一个表的数据条数,可指定HashKey和SortKey和Value的过滤条件

用法:

  1. USAGE: count_data [-p|--partition num] [-b|--max_batch_count num] [-t|--timeout_ms num]
  2. [-h|--hash_key_filter_type anywhere|prefix|postfix]
  3. [-x|--hash_key_filter_pattern str]
  4. [-s|--sort_key_filter_type anywhere|prefix|postfix|exact]
  5. [-y|--sort_key_filter_pattern str]
  6. [-v|--value_filter_type anywhere|prefix|postfix|exact]
  7. [-z|--value_filter_pattern str] [-d|--diff_hash_key] [-a|--stat_size]
  8. [-n|--top_count num] [-r|--run_seconds num]

说明:

  • -p|—partition参数:指定删除的分片
  • -b|—max_batch_count参数:指定一次性删除的最大数量
  • -d|—diff_hash_key参数:统计hashKey数量
  • -n|—top_count参数:仅展示指定数量的数据
  • -a|—stat_size参数:统计当前value的大小,单位字节
  • -r|—run_seconds num参数:仅运行指定时间进行统计
  • 其余参数均为过滤条件,参见multi_get_range示例:
  1. >>> count