基于redis的过车数据去重方法技术

技术编号:20567511 阅读:26 留言:0更新日期:2019-03-14 09:52
本申请公开了一种基于redis的过车数据去重方法,方法包括解析过车图片结果的json字符串,得到过车数据列表,所述过车数据列表中包括主体车数据、非主体车数据、无车牌机动车数据和非机动车数据的至少一种混合数据;设置逻辑变量,逻辑变量为给当前过车数据是过车数据列表最后一条数据时判断使用;对过车数据进行处理。本发明专利技术将过车数据存放到redis中进行缓存,没有数据处理的瓶颈。本发明专利技术将主体车数据和非主体车数据对应的键以不同的标识在redis中进行存储,防止过期数据丢失。本发明专利技术通过逻辑判断保证主体车数据不会被过滤掉。本发明专利技术中每张图片都确保会保留至少一条最优数据。

【技术实现步骤摘要】
基于redis的过车数据去重方法
本专利技术涉及数据处理
,尤其涉及一种基于redis的过车数据去重方法。
技术介绍
现有的公共交通道路中,一条路或者一个路口有多个卡口和电警,每个设备拍摄的图片经解析后的车辆数据中主体车最多有一个。现实中,一辆车同一时间间隔如2分钟内会被设备拍摄多张照片,甚至同一秒钟会被拍摄多次,而每张照片经解析之后又有很多辆过车数据,这样就造成了重复数据过多。因此,过车数据去重就显得尤为重要,但如何保留所有有效数据并且去除重复数据,其中包括但不限于优先保存主体车(每张图片的主要车辆信息)以及保证每张图片都至少有一张最优数据已成为本技术最大难点,此外,还需要考虑性能问题,处理太慢会严重影响后续业务。现有技术以及常规思路是将这些过车数据存到java的Map中或者保存到数据库中,而且根据的是消费时间而不是拍摄时间去重,并且不考虑数据是不是主体车数据,只考虑车牌号、路口以及缓存时间,这将带来的如下问题:1、如果一张图片有主体车和非主体车,如果非主体车的数据比主体车的数据先经过去重程序,则可能将非主体车数据保存下来,而主体车数据被删掉,此种情况很显然应该优先保存主体车;2、单纯依靠车牌和路口以及保存的时间来去重,可能会丢失很多原本应该保存下来的数据,比如第一张图片有车牌A,保存下来了,第二张图片有车牌A以及一些无牌的数据,第二张图片一条数据也不保存,此种情况很显然应该每张图片至少保留一条最优过车数据;3、单纯依靠车牌和路口以及保存的时间来去重,可能会造成去除原本应该保存的过车数据,比如2分钟之内来了两条过车数据,他们车牌和路口一样,但是拍摄时间相差大于2分钟,但是因为缓存的时间在2分钟之内,所以被删掉,此种情况很显然两条都应该都保存。
技术实现思路
本专利技术公开了一种基于redis的过车数据去重方法,方法包括步骤:解析过车图片结果的json字符串,得到过车数据列表,所述过车数据列表中包括主体车数据、非主体车数据、无车牌机动车数据和非机动车数据的至少一种混合数据;设置逻辑变量,所述逻辑变量为给当前过车数据是所述过车数据列表最后一条数据时判断使用,其中,所述变量包括:所述过车数据是否有当即保存的主体车或带车牌的非主体车布尔型变量A,设置为false表示没有;带车牌的非主体车对象C;是否有无车牌有车型的数据保存的布尔型变量B,设置为false表示没有;所述过车数据最后一条无车牌无车型的机动车的json字符串L;其中,A为sendFlag,B为noPlateButInfoFlag,C为carnoVsd,L为lastNoPlateNoCarInfoVehicleModelJson;对所述过车数据进行处理,处理流程具体为:遍历所述过车数据列表;当前过车数据为非机动车数据时,执行非机动车数据处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为无车牌的机动车数据时,执行无车牌的机动车数据处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为主体车数据时,执行主体机动车数据处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为非主体车数据时,且redis中主体车数据缓存存在时,执行非主体车数据且主体车数据缓存存在的处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为非主体车数据时,且redis中主体车数据缓存不存在,非主体车数据缓存存在时,执行非主体车数据且主体车数据缓存不存在、非主体车数据缓存存在的处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为非主体车数据时,且redis中主体车数据缓存不存在,非主体车数据缓存不存在时,执行非主体车数据且主体车数据缓存不存在、非主体车数据缓存不存在的处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为所述过车数据列表的最后一条时,执行当前数据是过车数据列表最后一条的处理流程。优选地,所述主体车数据和所述非主体车数据保存在redis中缓存,其中,所述主体车数据设置一个键值对,键由主体车标识、过车数据的车牌号和过车数据的路口组成,值为对应的过车数据json字符串;所述非主体车数据包括非主体车原数据和非主体车副本数据,设置两个键值对,分别是:非主体车原数据对应的键由非主体车标识、过车数据的车牌号和过车数据的路口组成、值为空;非主体车副本数据对应的键由非主体车副本标识、非主体车标识、过车数据的车牌号和过车数据的路口组成、值为对应的过车数据json字符串。优选地,所述非机动车数据处理流程,进一步为,将所述非机动车数据发送到消息队列kafka。优选地,所述执行无车牌的机动车数据处理流程,进一步为,当前过车数据是有车型的无车牌机动车数据时,则将所述当前过车数据发送到消息队列kafka,并赋值所述布尔型变量B为true;当前过车数据是无车型的无车牌机动车数据时,则将所述当前过车数据赋值为所述过车数据列表最后一条无车牌无车型的机动车的json字符串L。优选地,所述执行主体机动车数据处理流程,进一步为,将当前主体车数据发送到消息队列kafka;将所述当前主体车数据的键值对保存在redis中,过期时间设为120秒;赋值布尔型变量A为true;判断所述redis中是否有非主体车原数据对应的键,当所述redis中没有所述非主体车原数据对应的键时,则不做处理;当所述redis中存在所述非主体车原数据对应的键时,判断非主体车副本数据对应的的键是否为null,当所述非主体车副本数据对应的键为null时,则不做处理;当所述非主体车副本数据对应的键不为null时,则判断所述非主体车数据和所述主体车数据的拍摄时间之差是否超过2分钟,当所述拍摄时间之差超过2分钟时,将所述非主体车数据发送到所述消息队列kafka,同时删除所述redis缓存中的所述非主体车数据对应的两个键值对;当所述拍摄时间之差没有超过2分钟时,删除所述redis缓存中的所述非主体车数据对应的两个键值对。优选地,所述执行非主体车数据且主体车数据缓存存在的处理流程,进一步为,判断redis缓存中的主体车数据和当前非主体车数据的拍摄时间之差,当所述拍摄时间之差超过2分钟时,则将所述当前非主体车数据发送到消息队列kafka,并赋值布尔型变量A为true;当所述拍摄时间之差未超过2分钟时,则将C赋值为所述当前非主体车数据。优选地,所述执行非主体车数据且主体车数据缓存不存在、非主体车数据缓存存在的处理流程,进一步为,判断redis已缓存的非主体车副本数据对应的键是否为null,当所述已缓存的非主体车副本数据对应的键为null时,则将当前非主体车原数据对应的键值对保存到所述redis中,过期时间设为120秒,并同时在所述redis中保存所述当前非主体车副本数据对应的键值对,并赋值C为所述当前非主体车数据;当所述已缓存的非主体车副本数据对应的键不为null时,则判断所述当前非主体车数据和所述redis中已缓存的非主体车数据的拍摄时间之差是否超过2分钟,当所述拍摄时间之差超过2分钟时,则将所述当前非主体车数据发送到消息队列kafka,同时在所述redis中保存所述当前非主体车原数据对应的本文档来自技高网
...

【技术保护点】
1.一种基于redis的过车数据去重方法,其特征在于,包括步骤:解析过车图片结果的json字符串,得到过车数据列表,所述过车数据列表中包括主体车数据、非主体车数据、无车牌机动车数据和非机动车数据的至少一种混合数据;设置逻辑变量,所述逻辑变量为给当前过车数据是所述过车数据列表最后一条数据时判断使用,其中,所述变量包括:所述过车数据是否有当即保存的主体车或带车牌的非主体车布尔型变量A,设置为false表示没有;带车牌的非主体车对象C;是否有无车牌有车型的数据保存的布尔型变量B,设置为false表示没有;所述过车数据最后一条无车牌无车型的机动车的json字符串L;其中,A为sendFlag,B为noPlateButInfoFlag,C为carnoVsd,L为lastNoPlateNoCarInfoVehicleModelJson;对所述过车数据进行处理,处理流程具体为:遍历所述过车数据列表;当前过车数据为非机动车数据时,执行非机动车数据处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为无车牌的机动车数据时,执行无车牌的机动车数据处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为主体车数据时,执行主体机动车数据处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为非主体车数据时,且redis中主体车数据缓存存在时,执行非主体车数据且主体车数据缓存存在的处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为非主体车数据时,且redis中主体车数据缓存不存在,非主体车数据缓存存在时,执行非主体车数据且主体车数据缓存不存在、非主体车数据缓存存在的处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为非主体车数据时,且redis中主体车数据缓存不存在,非主体车数据缓存不存在时,执行非主体车数据且主体车数据缓存不存在、非主体车数据缓存不存在的处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为所述过车数据列表的最后一条时,执行当前数据是过车数据列表最后一条的处理流程。...

【技术特征摘要】
1.一种基于redis的过车数据去重方法,其特征在于,包括步骤:解析过车图片结果的json字符串,得到过车数据列表,所述过车数据列表中包括主体车数据、非主体车数据、无车牌机动车数据和非机动车数据的至少一种混合数据;设置逻辑变量,所述逻辑变量为给当前过车数据是所述过车数据列表最后一条数据时判断使用,其中,所述变量包括:所述过车数据是否有当即保存的主体车或带车牌的非主体车布尔型变量A,设置为false表示没有;带车牌的非主体车对象C;是否有无车牌有车型的数据保存的布尔型变量B,设置为false表示没有;所述过车数据最后一条无车牌无车型的机动车的json字符串L;其中,A为sendFlag,B为noPlateButInfoFlag,C为carnoVsd,L为lastNoPlateNoCarInfoVehicleModelJson;对所述过车数据进行处理,处理流程具体为:遍历所述过车数据列表;当前过车数据为非机动车数据时,执行非机动车数据处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为无车牌的机动车数据时,执行无车牌的机动车数据处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为主体车数据时,执行主体机动车数据处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为非主体车数据时,且redis中主体车数据缓存存在时,执行非主体车数据且主体车数据缓存存在的处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为非主体车数据时,且redis中主体车数据缓存不存在,非主体车数据缓存存在时,执行非主体车数据且主体车数据缓存不存在、非主体车数据缓存存在的处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为非主体车数据时,且redis中主体车数据缓存不存在,非主体车数据缓存不存在时,执行非主体车数据且主体车数据缓存不存在、非主体车数据缓存不存在的处理流程,并判断所述当前过车数据是否为所述过车数据列表的最后一条;当前过车数据为所述过车数据列表的最后一条时,执行当前数据是过车数据列表最后一条的处理流程。2.根据权利要求1所述的基于redis的过车数据去重方法,其特征在于,所述主体车数据和所述非主体车数据保存在redis中缓存,其中,所述主体车数据设置一个键值对,键由主体车标识、过车数据的车牌号和过车数据的路口组成,值为对应的过车数据json字符串;所述非主体车数据包括非主体车原数据和非主体车副本数据,设置两个键值对,分别是:非主体车原数据对应的键由非主体车标识、过车数据的车牌号和过车数据的路口组成、值为空;非主体车副本数据对应的键由非主体车副本标识、非主体车标识、过车数据的车牌号和过车数据的路口组成、值为对应的过车数据json字符串。3.根据权利要求1所述的基于redis的过车数据去重方法,其特征在于,所述非机动车数据处理流程,进一步为,将所述非机动车数据发送到消息队列kafka。4.根据权利要求1所述的基于redis的过车数据去重方法,其特征在于,所述执行无车牌的机动车数据处理流程,进一步为,当前过车数据是有车型的无车牌机动车数据时,则将所述当前过车数据发送到消息队列kafka,并赋值所述布尔型变量B为true;当前过车数据是无车型的无车牌机动车数据时,则将所述当前过车数据赋值为所述过车数据列表最后一条无车牌无车型的机动车的json字符串L。5.根据权利要求2所述的基于redis的...

【专利技术属性】
技术研发人员:郝敬全于广范吴永辛国茂李占强李善宝李庆功马述杰
申请(专利权)人:泰华智慧产业集团股份有限公司
类型:发明
国别省市:山东,37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1