Tile38命令-【Keys】
文章目录
- 1.BOUNDS
- 语法
- 描述
- 示例
- 2.DEL
- 语法
- 描述
- 示例
- 3.DROP
- 语法
- 描述
- 示例
- 4.EXIST
- 语法
- 描述
- 示例
- 5.EXPIRE
- 语法
- 描述
- 示例
- 6.FEXIST
- 语法
- 描述
- 示例
- 7.FGET
- 语法
- 描述
- 示例
- 8.FSET
- 语法
- 描述
- 示例
- 9.GET
- 语法
- 描述
- 示例
- 10.JDEL
- 语法
- 描述
- 示例
- 11.JGET
- 语法
- 描述
- 示例
- 12.JSET
- 语法
- 描述
- 示例
- 13.KEYS
- 语法
- 描述
- 示例
- 14.PDEL
- 语法
- 描述
- 示例
- 15.PERSIST
- 语法
- 描述
- 示例
- 16.RENAME
- 语法
- 描述
- 示例
- 17.RENAMENX
- 语法
- 描述
- 示例
- 18.SET
- 语法
- 描述
- 示例
- 19.STATS
- 语法
- 描述
- 示例
- 20.TTL
- 语法
- 描述
- 示例
1.BOUNDS
获取一个键中所有对象的组合边界。
语法
BOUNDS key
描述
返回关键集合(key)中所有对象的最小边界矩形。
示例
# 返回fleet集合的边界
BOUNDS fleet
在Tile38中,bounds fleet 命令用于返回所有在fleet键下的对象的最小边界矩形。这个命令可以帮助你确定一个集合中所有对象所覆盖的地理区域的边界。
简而言之,bounds fleet 命令用于查询名为 fleet 的集合中所有对象的边界框,这个边界框是一个矩形区域,能够包含集合中所有的地理对象。
2.DEL
从 key 中删除一个 id。
语法
DEL key id
描述
删除指定的对象。
示例
DEL fleet truck1
在Tile38中,DEL 命令用于删除一个或多个键(key)。命令 DEL fleet truck1,是要删除名为 fleet 的集合中的一个 ID 名为 truck1 的对象。
3.DROP
从数据库中删除一个 key。
语法
DROP key
描述
删除所有的对象,从指定的 key 中。
示例
DROP fleet
在Tile38中,DROP 命令用于直接删除一组数据对象。当你执行 DROP fleet 命令时,它会移除名为 fleet 的集合中的所有数据对象。
这个操作是不可逆的,一旦执行,所有在 fleet 集合中的数据都将被永久删除。在执行 DROP 命令之后,如果你尝试使用 SCAN 命令查看 fleet 集合,将不会返回任何对象,因为该集合已经为空或者不存在了。
4.EXIST
检查 id 是否存在。
语法
EXIST key id
描述
获取一个布尔值,指示给定键的id是否存在。
请注意,不存在的键或 id 将导致错误!
示例
EXIST fleet truck1
获取 key fleet 的 id 为 truck1 的对象是否存在。
5.EXPIRE
为 id 设置超时。
语法
EXPIRE key id seconds
描述
在 id 上设置超时。
示例
EXPIRE fleet truck1 10
这将在10秒后从 key 为 fleet 中删除 id 是 truck1 的对象。
6.FEXIST
检查 id 上是否存在字段。
语法
FEXIST key id
描述
获取一个布尔值,指示给定的 id 是否存在字段。如果字段存在,无论是否设置了值,都将返回true。
请注意,不存在的键或 id 将导致错误!
示例
FEXIST fleet truck1 speed
检查在 fleet 集合中 id 为 truck1 的对象是否包含名为 speed 的字段。
7.FGET
获取指定对象的特定字段的值。
语法
FGET key id field
描述
获取指定对象的特定字段的值。
返回值是字段的值,如果字段不存在或未设置,则返回0。
请注意,不存在的键或 id 将导致错误!
示例
FGET fleet truck1 speed
从名为 fleet 的集合中,获取 id 为 truck1 的对象,获取该对象的字段 speed 的值。
8.FSET
设置或更新特定对象的字段值。
语法
FSET key id [XX] field value [field value ...]
XX:可选参数,如果指定,只有当对象已经存在时才会设置字段值,否则不会执行任何操作。
描述
设置id的一个或多个字段的值。字段是双精度浮点。
返回值是实际更改其值的字段数量的整数计数。
示例
# 将 id 为 truck1 的“速度”字段设置为16,“车轮”字段设置成8。
# 如果truck1对象不存在,这个命令会创建它并设置字段值;如果已存在,则更新字段值。
FSET fleet truck1 speed 16 wheels 8
如果你只想在对象已经存在时设置字段值,可以使用XX参数:
# 这样,如果truck1对象不存在,命令不会执行任何操作,也不会报错。
FSET fleet truck1 XX speed 16 wheels 8
通常,如果字段设置在不存在的 id 上,FSET将返回错误。但是,选项XX可以更改此行为。具体来说,如果使用XX选项调用,当在不存在的 id 上调用 FSET 时,FSET将返回0。
请注意,不存在的 key (这里的fleet)仍然会导致错误!
9.GET
获取指定 id 的对象 。
语法
GET key id [WITHFIELDS] [OBJECT|POINT|BOUNDS|(HASH geohash)]
描述
获取 id 的对象。默认输出格式是GeoJSON对象。
可以通过附加参数来定制返回的数据类型:
- WITHFIELDS:命令将返回对象的所有字段。等于零的字段值将被省略。
- OBJECT:GeoJSON对象。返回对象的完整表示,包括字段和地理信息。
- POINT:标准纬度、经度点。也就是返回对象的地理坐标点。
- BOUNDS:返回对象的最小边界矩形范围。
- HASH:返回对象位置的Geohash值。Geohash需要1到12的精度。
示例
# 从“fleet”集合中获取id为“truck1”的geojson对象
GET fleet truck1
# 同上
GET fleet truck1 OBJECT
# 获取纬度、经度点
GET fleet truck1 POINT
# 获取边界矩形范围
GET fleet truck1 BOUNDS
# 获取精度为5的geohash
GET fleet truck1 HASH 5
10.JDEL
用于从JSON文档中删除一个值。
语法
JDEL key id path
描述
JDEL命令允许你操作JSON字符串。例如,如果你有一个存储在Tile38中的JSON对象,并且你想要删除这个对象中的特定字段,你可以使用JDEL命令来实现。
所有这些命令都使用GJSON路径语法,更多信息可以查看相关文档。
JGET、JSET和JDEL允许处理JSON字符串。更多信息参考
- Setting JSON
- Getting JSON
示例
假设你有一个JSON对象存储在Tile38中,键为user,ID为901,对象内容如下:
{"name": {"first": "Tom","last": "Anderson"}
}
如果你想要删除name.last字段,你可以执行以下命令:
JDEL user 901 name.last
执行后,再次使用JGET命令获取该对象,你将得到:
{"name": {"first": "Tom"}
}
这表明name.last字段已被成功删除。
其他示例:
JSET user 901 name Tom
JGET user 901
> {"name":"Tom"}JSET user 901 name.first Tom
JSET user 901 name.last Anderson
JGET user 901
> {"name":{"first":"Tom","last":"Anderson"}}JDEL user 901 name.last
JGET user 901
> {"name":{"first":"Tom"}}
11.JGET
从存储在Tile38中的JSON对象中检索特定字段的值。
语法
JGET key id path [RAW]
描述
从JSON文档中获取值。
示例
假设你有一个存储在Tile38中的JSON对象,键为fleet,ID为truck1,对象内容如下:
{"name": "Dalong","location": {"latitude": 33.5123,"longitude": -112.2693}
}
如果你想要获取location.latitude字段的值,你可以执行以下命令:
# 这个命令将返回truck1对象中location对象的latitude字段的值,即33.5123。
JGET fleet truck1 location.latitude
JGET命令使用GJSON路径语法来指定要检索的字段,这使得从复杂的JSON结构中提取特定数据变得简单直接。
其他示例:
JSET user 901 name Tom
JGET user 901
> {"name":"Tom"}JSET user 901 name.first Tom
JSET user 901 name.last Anderson
JGET user 901
> {"name":{"first":"Tom","last":"Anderson"}}JDEL user 901 name.last
JGET user 901
> {"name":{"first":"Tom"}}
12.JSET
在一个JSON文档中设置一个值。
语法
JSET key id path value [RAW|STR]
可选的RAW或STR参数指示值的类型,RAW表示原始数据,而STR表示字符串。
描述
在一个JSON文档中设置一个值。
示例
# 如果你想要为用户901设置名字为Tom,你可以使用如下命令:
JSET user 901 name Tom
# 执行上述命令之后,通过JGET查询这个值
JGET user 901
这将返回JSON格式的值,例如:
{"ok":true,"value":"{\"name\":\"Tom\"}","elapsed":"17.864µs"}
其他示例:
JSET user 901 name Tom
JGET user 901
> {"name":"Tom"}JSET user 901 name.first Tom
JSET user 901 name.last Anderson
JGET user 901
> {"name":{"first":"Tom","last":"Anderson"}}JDEL user 901 name.last
JGET user 901
> {"name":{"first":"Tom"}}
13.KEYS
查找与给定模式匹配的所有键。
语法
KEYS pattern
描述
返回与模式匹配的所有键。
支持的全局格式:
- h?llo匹配hello、hallo和hxllo
- h*llo匹配hllo和heeeello
- h[ae]llo匹配hello和hallo,但不匹配hillo
- h[^e]llo与hallo、hbllo、。。。但不匹配hello
- h[a-b]llo匹配hallo到hbllo
示例
# 返回所有的key
KEYS *
# 返回所有前缀为“fleet:”的键
KEYS fleet:*
14.PDEL
删除与指定模式匹配的所有对象。
语法
PDEL key patter
描述
命令会从指定的集合中删除所有ID与给定正则表达式匹配的对象。
示例
# 例如,如果你有一个名为fleet的集合,并且想要删除所有ID以truck开头的对象,你可以使用如下命令:
PDEL fleet truck*
15.PERSIST
用于移除一个指定 id 的对象上的超时设置。
语法
PERSIST key id
描述
PERSIST命令用于移除一个对象的超时设置。如果之前使用EXPIRE命令为某个对象设置了过期时间,使用PERSIST命令可以取消这个设置,使对象不再自动过期。
示例
# 例如,如果你有一个名为fleet的集合和一个对象ship5,并且之前为ship5设置了30秒后过期,你可以使用以下命令来移除这个过期设置:
PERSIST fleet ship5
16.RENAME
RENAME命令用于重命名一个键(key)到另一个新的键名。
语法
RENAME key newkey
描述
将集合 key 重命名为newkey。如果 newkey 已存在,则将在重命名之前将其删除。
当地理围栏或webhook正在使用 key 或 newkey 时,返回“OK”表示成功,或返回“ERR”。
示例
# 如果你有一个名为oldName的键,并且想要将其重命名为newName
RENAME oldName newName
17.RENAMENX
用于重命名一个键(key)到另一个新的键名,但是这个操作仅在新键名不存在时才会执行。如果新键名已经存在,那么命令将不做任何操作。
语法
RENAMENX key newkey
描述
如果集合密钥尚不存在,则将其重命名为newkey。如果newkey已存在,则此命令不执行任何操作。
如果密钥已重命名为newkey,则返回1;如果newkey已存在,则返回0;或者当密钥或newkey正被地理围栏或webhook使用时,返回“ERR”。
示例
# 如果new_key不存在,RENAMENX命令将old_key重命名为new_key,并且返回1表示成功。如果new_key已经存在,命令将返回0,表示没有进行任何操作。
RENAMENX fleet fleet2
18.SET
设置 id 的值。SET命令用于设置或更新对象,这些对象可以是地理空间数据,如点、区域、地理围栏等。
语法
SET key id [FIELD name value ...] [EX seconds] [NX|XX] (OBJECT geojson)|(POINT lat lon z)|(BOUNDS minlat minlon maxlat maxlon)|(HASH geohash)|(STRING value)
描述
设置id的值。如果某个值已经与该键/id相关联,则将被覆盖。
命令格式包含了多个选项,这些选项允许你指定不同类型的数据和行为。下面是每个参数的详细解释:
- key: 集合的名称,用于分组相关的对象。例如 fleet。
- id: 唯一标识符,用于标识集合中的具体对象。例如 truck1。
- FIELD name value …: 设置对象的属性字段,可以设置多个字段。
- EX seconds: 设置对象的过期时间,单位为秒。
- NX: 如果对象不存在,则设置对象。
- XX: 仅当对象已存在时更新对象。
- OBJECT geojson: 设置一个GeoJSON对象。
- POINT lat lon z: 设置一个地理空间点,其中lat是纬度,lon是经度,z是可选的海拔高度。
- BOUNDS minlat minlon maxlat maxlon: 设置一个地理空间边界框,定义了最小和最大的纬度和经度。
- HASH geohash: 使用GeoHash编码设置位置。
- STRING value: 设置一个简单的字符串值。
除了 key 和 id 基本参数之外,其他的都是可选参数。
示例
# 设置一个点对象
SET places place1 POINT 34.0522 -118.2437
# 设置一个带属性的点对象
# 这将创建一个ID为place1的点对象,并附加两个属性:name和population。
SET places place1 POINT 34.0522 -118.2437 FIELD name "Los Angeles" FIELD population 4000000
# 设置一个GeoJSON对象,这将创建一个ID为place1的GeoJSON对象。
SET places place1 OBJECT '{"type":"Feature","geometry":{"type":"Point","coordinates":[-118.2437,34.0522]}}'
# 设置一个带过期时间的点对象, 这将创建一个ID为place1的点对象,并设置它在3600秒(1小时)后过期。
SET places place1 POINT 34.0522 -118.2437 EX 3600
# 仅当对象不存在时设置,这将只在place1不存在时创建它。
SET places place1 POINT 34.0522 -118.2437 NX
其他示例:
# 在纬度、经度上设置一个简单的点。
SET fleet truck1 POINT 33.5123 -112.2693
# 具有Z坐标的点。这是特定于应用程序的,如标高或时间戳等。
SET fleet truck1 POINT 33.5123 -112.2693 245.0
# 最小边界矩形。这些值是(西南纬度、西南经度、东北纬度、东北经度)。
SET props house1 BOUNDS 33.7840 -112.1520 33.7848 -112.1512
# 一个Geohash。地理哈希是一种使用短字母数字字符串表示位置(世界上任何地方)的便捷方式,使用较长的字符串可以获得更高的精度。
SET props area1 HASH 9tbnwg
GeoJSON对象。GeoJSON是一种行业标准格式,用于表示各种对象类型,包括点、多点、线串、多线串、多边形、多边形、几何集合、特征和特征集合。Tile38支持所有标准,但有这些例外。
- crs成员不受支持,将被忽略。假设CRS84/WGS84投影。
- 任何未被识别的成员(包括crs)都将被忽略。
- 所有坐标可以是2轴或3轴。少于2个轴或多于3个轴将导致解析错误。
所有被忽略的成员都不会继续存在。
重要的是要注意,所有GeoJSON坐标都是按经度、纬度顺序排列的。
SET cities tempe OBJECT {"type":"Polygon","coordinates":[[[-111.9787,33.4411],[-111.8902,33.4377],[-111.8950,33.2892],[-111.9739,33.2932],[-111.9787,33.4411]]]}
字段是属于对象的额外数据。对象可以具有的字段数量没有限制。
在设置对象时设置字段。
SET fleet truck1 FIELD speed 90 POINT 33.5123 -112.2693
SET fleet truck1 FIELD speed 90 FIELD age 21 POINT 33.5123 -112.2693
当对象已经存在时,也可以设置字段。请参见FSET。
z坐标允许对标高和时间戳等值进行优化范围查询。
z坐标允许对标高和时间戳等值进行优化范围查询。
SET fleet truck1 POINT 33.5123 -112.2693 115
SET fleet truck1 OBJECT {"type":"Point","coordinates":[-112.2693,33.5123,115]}
现在,查询可以通过将z坐标视为一个字段来搜索它:
NEARBY fleet WHERE z -15 130 POINTS 33 -115 100000
它将查找距离33、-115 100公里以内、z坐标在-15和130之间的所有点。请注意WHERE子句中的小写z。
可以使用string关键字设置原始字符串。字符串类型的值可以是纯文本或一系列原始字节。要检索字符串值,可以使用GET、SCAN或SEARCH。
SET fleet truck1:driver STRING "John Denton"
19.STATS
显示一个或多个键的统计信息。
语法
STATS key [key...]
描述
显示一个或多个键的统计信息。
示例
# 返回“fleet”和“fleet2”的关键统计数据
STATS fleet1 fleet
当你执行STATS fleet1 fleet命令时,Tile38会返回关于fleet1和fleet这两个键的统计数据。
根据搜索结果,STATS命令返回的统计信息包括:
- in_memory_size:估计的内存大小,单位为字节。
- num_objects:给定键中的对象数量。
- num_points:给定键中的地理对象数量。
{"ok": true,"stats": [{"in_memory_size": 4823028,"num_objects": 26343,"num_points": 350929,},{"in_memory_size": 36552218,"num_objects": 162341,"num_points": 1029938}],"elapsed": "27.677µs"
}
这些统计信息可以帮助你了解特定键的使用情况,包括它们在内存中的存储大小以及包含的对象数量。这对于监控和管理Tile38数据库的性能非常有用。
20.TTL
用于查看某个对象的剩余生存时间(Time To Live,TTL),即该对象距离过期还有多长时间。
语法
TTL key id
描述
用于查看某个对象的剩余生存时间(Time To Live,TTL),即该对象距离过期还有多长时间。
示例
# 例如,如果你想要查看集合fleet中对象truck1的TTL,你可以使用如下命令:
TTL fleet truck1
执行这个命令后,Tile38会返回该对象的剩余生存时间,单位通常是秒。如果对象没有设置过期时间,或者对象不存在,命令将返回-2或-1,分别表示对象不存在或对象没有设置过期时间
。