Springboot集成Tile客户端之Set命令如何实现(set,springboot,tile,开发技术)

时间:2024-05-02 06:58:21 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    Springboot%E9%9B%86%E6%88%90Tile%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%B9%8BSet%E5%91%BD%E4%BB%A4%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0

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命令的使用,也是一个keyid的组合,但是不同的是,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命令如何实现的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Vue怎么自定义名称下载PDF下一篇:

36 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18