数据操作
子命令 | 功能 |
---|---|
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
设置单条数据。
用法:
USAGE: set <hash_key> <sort_key> <value> [ttl_in_seconds]
说明:
- 写入数据的格式必须为
hash_key
+sort_key
+value
。 ttl_in_seconds
参数:如果指定,则设置该条数据的存活时间,单位为秒。示例:
>>> set xiaomi cloud 000
multi_set
设置同一hash_key下的多条数据。
用法:
USAGE: multi_set <hash_key> <sort_key> <value> [sort_key value...]
说明:
- sort_key是pegasus定义的一种数据模型,详细信息参见:数据模型。
- 不同的sort_key名字必须不同,否则会输出“ERROR: duplicate sort key
”。 示例:
>>> multi_set xiaomi cloud0 000 cloud1 001
get
获取单条数据。
用法:
USAGE: get <hash_key> <sort_key>
示例:
>>> get xiaomi cloud
multi_get
通过指定多个SortKey,获取同一HashKey下的多条数据。
用法:
USAGE: multi_get <hash_key> [sort_key...]
示例:
>>> multi_get xiaomi cloud0 cloud1
multi_get_range
通过指定SortKey的查询范围和过滤条件,获取同一HashKey下的多条数据。
用法:
USAGE: multi_get_range <hash_key> <start_sort_key> <stop_sort_key>
[-a|--start_inclusive true|false] [-b|--stop_inclusive true|false]
[-s|--sort_key_filter_type anywhere|prefix|postfix]
[-y|--sort_key_filter_pattern str] [-n|--max_count num]
[-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时开始支持示例:
>>> 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。
用法:
USAGE: multi_get_sortkeys <hash_key>
示例:
>>> multi_get_sortkeys xiaomi
del
删除单条数据。
用法:
USAGE: del <hash_key> <sort_key>
示例:
>>> del xiaomi cloud0
multi_del
通过指定多个SortKey,删除同一HashKey下的多条数据。
用法:
USAGE: multi_del <hash_key> <sort_key> [sort_key...]
示例:
>>> multi_del del xiaomi cloud0 cloud1
multi_del_range
通过指定SortKey的查询范围和过滤条件,删除同一HashKey下的多条数据。
用法:
USAGE: multi_del_range <hash_key> <start_sort_key> <stop_sort_key>
[-a|--start_inclusive true|false] [-b|--stop_inclusive true|false]
[-s|--sort_key_filter_type anywhere|prefix|postfix]
[-y|--sort_key_filter_pattern str] [-o|--output file_name]
[-i|--silent]
说明:
-i|—silent
参数:如果为true
表示不打印删除时的日志- 其与参数,参见multi_get_range-说明示例:
>>> multi_del_range xioami cloud0 cloud5 -a true -b true -s prefix -y str -n 100 -i false -r false
incr
原子增减操作。
用法:
USAGE: incr <hash_key> <sort_key> [increment]
说明:
- 操作数increment可以为正数也可以为负数,所以一个incr接口就可以实现原子增或者原子减,详情参照原子增减示例:
>>> incr cloud0 xiaomi 1
check_and_set
原子CAS操作。
用法:
USAGE: check_and_set <hash_key> [-c|--check_sort_key str]
[-t|--check_type not_exist|not_exist_or_empty|exist|not_empty]
[match_anywhere|match_prefix|match_postfix]
[bytes_less|bytes_less_or_equal|bytes_equal|bytes_greater_or_equal|bytes_greater]
[int_less|int_less_or_equal|int_equal|int_greater_or_equal|int_greater]
[-o|--check_operand str] [-s|--set_sort_key str] [-v|--set_value str]
[-l|--set_value_ttl_seconds num] [-r|--return_check_value]
说明:
- 对比交换,最初是表示一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值。参照CAS操作示例:该命令表征检查hashKey为“cloud”,且存在sortKey为“90”时,set sortKey-value为“91”-“91”
>>> check_and_set cloud -c 90 -t exist match_anywhere bytes_less int_less -s 91 -v 91 -r
check_and_mutate
原子CAS扩展版本,参见原子CAS扩展版本
用法:
USAGE: check_and_mutate <hash_key> [-c|--check_sort_key str]
[-t|--check_type not_exist|not_exist_or_empty|exist|not_empty]
[match_anywhere|match_prefix|match_postfix]
[bytes_less|bytes_less_or_equal|bytes_equal|bytes_greater_or_equal|bytes_greater]
[int_less|int_less_or_equal|int_equal|int_greater_or_equal|int_greater]
[-o|--check_operand str] [-r|--return_check_value]
exist
查询某条数据是否存在。
用法:
USAGE: exist <hash_key> <sort_key>
示例:
>>> exist xiaomi cloud0
count
获取同一HashKey下的SortKey的个数。
用法:
USAGE: count <hash_key>
示例:
>>> count xiaomi
ttl
查询某条数据的TTL(Time To Live)时间,返回剩余的live时间,单位为秒;返回Infinite表示没有TTL限制。
用法:
USAGE: ttl <hash_key> <sort_key>
示例:
>>> ttl xiaomi cloud
hash
查询某条数据的TTL(Time To Live)时间,返回剩余的live时间,单位为秒;返回Infinite表示没有TTL限制。
用法:
USAGE: hash <hash_key> <sort_key>
示例:
>>> hash xiaomi cloud
hash_scan
逐条扫描同一HashKey下的数据,可指定SortKey的查询范围和过滤条件,结果按照SortKey排序。
用法:
USAGE: hash_scan <hash_key> <start_sort_key> <stop_sort_key> [-a|--start_inclusive true|false]
[-b|--stop_inclusive true|false]
[-s|--sort_key_filter_type anywhere|prefix]
[-y|--sort_key_filter_pattern str]
[-v|--value_filter_type anywhere|prefix|postfix|exact
[-z|--value_filter_pattern str]
[-o|--output file_name]
[-n|--max_count num]
[-t|--timeout_ms num]
[-d|--detailed]
[-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示例:
>>> hash_scan xiaomi cloud00 cloud01
full_scan
对表进行全扫描,可指定HashKey和SortKey和Value的过滤条件,同一HashKey的结果按照SortKey排序,HashKey之间无顺序保证
用法:
USAGE: full_scan [-h|--hash_key_filter_type anywhere|prefix|postfix]
[-x|--hash_key_filter_pattern str]
[-s|--sort_key_filter_type anywhere|prefix]
[-y|--sort_key_filter_pattern str]
[-v|--value_filter_type anywhere|prefix|postfix|exact
[-z|--value_filter_pattern str]
[-o|--output file_name]
[-n|--max_count num]
[-t|--timeout_ms num]
[-d|--detailed]
[-i|--no_value]
说明:
- 参数说明参见hash_scan实例:
>>> full_scan
copy_data
将一个表的数据逐条插入到另外一个表。
用法:
USAGE: copy_data <-c|--target_cluster_name str> <-a|--target_app_name str> [-s|--max_split_count num]
[-p|--partition num]
[-b|--max_batch_count num]
[-t|--timeout_ms num]
[-h|--hash_key_filter_type anywhere|prefix|postfix]
[-x|--hash_key_filter_pattern str]
[-s|--sort_key_filter_type anywhere|prefix|postfix|exact]
[-y|--sort_key_filter_pattern str]
[-v|--value_filter_type anywhere|prefix|postfix|exact]
[-z|--value_filter_pattern str]
[-n|--no_overwrite] [-i|--no_value] [-g|--geo_data]
说明:
- 源表通过use命令指定,目标表通过-c和-a命令执行,目标表可以在另外一个集群,详细用法参见Table迁移,可指定HashKey和SortKey和Value的过滤条件示例:
>>> copy_data -c ClusterB -a TableB -t 10000
clear_data
将一个表的数据逐条删除,实际上就是先扫描数据,然后对每一条数据执行删除操作,可指定HashKey和SortKey和Value的过滤条件
用法:
USAGE: clear_data [-p|--partition num]
[-b|--max_batch_count num]
[-t|--timeout_ms num]
[-h|--hash_key_filter_type anywhere|prefix|postfix]
[-x|--hash_key_filter_pattern str]
[-s|--sort_key_filter_type anywhere|prefix|postfix|exact]
[-y|--sort_key_filter_pattern str]
[-v|--value_filter_type anywhere|prefix|postfix|exact]
[-z|--value_filter_pattern str]
[-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示例:
>>> clear_data
count_data
统计一个表的数据条数,可指定HashKey和SortKey和Value的过滤条件
用法:
USAGE: count_data [-p|--partition num] [-b|--max_batch_count num] [-t|--timeout_ms num]
[-h|--hash_key_filter_type anywhere|prefix|postfix]
[-x|--hash_key_filter_pattern str]
[-s|--sort_key_filter_type anywhere|prefix|postfix|exact]
[-y|--sort_key_filter_pattern str]
[-v|--value_filter_type anywhere|prefix|postfix|exact]
[-z|--value_filter_pattern str] [-d|--diff_hash_key] [-a|--stat_size]
[-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示例:
>>> count