Springboot集成Tile客户端之Set命令如何实现
导读:本文共8210.5字符,通常情况下阅读需要27分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:本文小编为大家详细介绍“Springboot集成Tile客户端之Set命令如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Springboot集成Tile客户端之Set命令如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。set命令语法SET key id [FIELD name value ...] [EX seconds] [NX|XX] (OBJECT... ...
目录
(为您整理了一些要点),点击可以直达。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)
set
命令就相当于redis中的hash
命令的使用,也是一个key
和id
的组合,但是不同的是,Tile38的set
命令还可以携带更多的其他属性,比如可以自定义FIELD
字段,还可以设置EX
有效期等等,那么我们需要给这个语法设计一套好用的java api
,以便开发人员可以更好地使用Tile38。
首先,根据上面提供的语法,我们可以分为三部分:
1.第一部分就是命令的启示关键字SET
,我们把这个关键字单独作为一部分;
2.第二部分就是key id [FIELD name value ...] [EX seconds] [NX|XX]
,我们把这些都作为参数;
3.第三部分就是最后的目标数据对象:
(OBJECT geojson)|(POINT lat lon z)|(BOUNDS minlat minlon maxlat maxlon)|(HASH geohash)|(STRING value)
1.我们把第一部分的命令关键字通过枚举的方式来管理:
因为redis客户端工具在发送命令前需要对所有命令进行编码,所以要求所有的命令都必须实现ProtocolKeyword
接口。如果命令的起始关键字是两个或多个单词,那么我们会使用下划线连接,转换成bytes的时候我们可以使用空格把下划线替换。
2.我们把命令的第二部分抽象成一个具体的class,通过相关的字段来进行描述:
我们上面通过建造者的设计模式,把所有的参数都转换成了SetOpts这个类当中,开发人员就可以通过SetOpts对象的构建来灵活地控制命令中的参数了。
3.我们需要把第三部分当中的不同数据对象转换成不同的类型:
Point关键的字段就是经纬度,除此之外,还有一个额外的字段z
,用来存储额外的业务参数,可为空。
BOUNDS就是矩形,它的关键字段就是左下角和右上角两个点位,我们使用coordinate1和coordinate2来表示左下角和右上角;
HASH和STRING其实就是一个单独的字符串,但是我们还是把它封装一下,以便开发人员使用;
OBJECT其实就是GeoJSON数据,这一类数据比较复杂一点,一共有六种类型,想了解的小伙伴可以看这里geojson.org/
为了开发人员能够更好的使用这六种类型,我们同样使用建造者模式来设计一下GeoJSON数据类型:
我们现在一个大类里面创建多个方法,每一个方法都把对应类型的建造者给创造出来,这样的话,就相当于这个类当中有创建六种对象的方式,每个建造者都只负责建造对应的那个对象。
下面分别是六个建造者的代码,每个对象都基于最基本的BaseGeoJson来构造,BaseGeoJson中把公共的字段type和额外的meta字段抽出来,各个类型不同的点在于坐标点的数量和层次不同,所以根据各自类型的特点,代码设计如下:
最后,再补充一个基类Element:
我们针对所有的数据类型全部转换成具体的代码设计,下面我们看看如何使用:
Springboot集成Tile客户端之Set命令如何实现的详细内容,希望对您有所帮助,信息来源于网络。