CN110083501A - 接口调用计数方法和装置 - Google Patents
接口调用计数方法和装置 Download PDFInfo
- Publication number
- CN110083501A CN110083501A CN201810072556.XA CN201810072556A CN110083501A CN 110083501 A CN110083501 A CN 110083501A CN 201810072556 A CN201810072556 A CN 201810072556A CN 110083501 A CN110083501 A CN 110083501A
- Authority
- CN
- China
- Prior art keywords
- ordered set
- counting
- interface
- module
- redis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
Abstract
本发明公开了一种接口调用计数方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;接收计数指令,所述计数指令包括计数的起止时间;根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数。该实施方式的计数处理过程简单,耗时少,结果准确,而且易于维护;可以基于特定时间区间进行计数;减少网络往返时延和网络传输次数,从而可以降低请求失败率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种接口调用计数方法和装置。
背景技术
在当前互联网时代,电商和互联网金融高速发展,各种交易也从线下转移到了线上。但是,互联网是一个开放透明而且不安全的环境,不法分子抢占资源例如抢购优惠商品以及商家刷单的现象层出不穷。因此,为了保障合法用户的公平权益,维护系统的稳定安全,需要一个可靠的风控系统去保障交易及访问的安全。
在风控系统架构方案中,都有一个重要的组成部分,称为计数服务器(CounterServer)。它扮演着流量计算和控制的角色。通过对流量和请求进行统计,对超过配置阈值的请求进行控制和限制。不同于监控系统中对用户数、访问PV(Page View,页面浏览量)和访问UV(Unique Visitor,网站独立访问量)等数据的计数和统计,风控系统中的计数服务器对计数的性能和实时性要求很高。例如,在电子商务平台的促销都是整点促销,如果性能和实时性不高,面对不法分子在促销时间点刷单抢购优惠商品时,限制处理就会滞后,不能起到防刷的目的。
目前,可以通过关系型数据库进行计数或者基于Redis中的List结构对用户登录相关请求进行计数,防止非法用户进行频繁注册和暴力登录。
然而,在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
在海量请求下,关系型数据库操作及查询耗时大,进而严重影响了计数服务的性能和响应时间。即使采用分库分表进行优化,在请求量很大的情况下,处理的耗时也难以降到100毫秒以下。
对于采用Redis中的List结构进行计数,虽然可以降低一定的耗时,但是对于不同的时间区间需要创建不同List,增加了操作步骤和处理时间;容易出现差错,准确性不高。
发明内容
有鉴于此,本发明实施例提供一种接口调用计数方法和装置,计数处理过程简单,耗时少,结果准确,而且易于维护,能够基于特定时间区间进行计数。
为实现上述目的,根据本发明实施例的一个方面,提供了一种接口调用计数方法,包括:接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;接收计数指令,所述计数指令包括计数的起止时间;根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数。
可选地,所述有序集合中的成员具有三个属性:键、次序和值;所述三个属性根据如下过程确定:根据所述接口调用指令,确定所述键;根据当前时间,确定所述次序;根据所述当前时间和随机数,确定所述值。
可选地,根据所述接口调用指令,确定所述键包括:根据所述接口调用指令,确定接口名和用户标识;根据所述接口名和用户标识,确定所述键;
根据当前时间,确定所述次序包括:获取当前时间戳,将所述当前时间戳作为所述次序;
根据所述当前时间和随机数,确定所述值包括:根据所述当前时间戳和随机数,确定所述值。
可选地,所述方法还包括:设置所述有序集合的过期时间;响应于删除指令,删除所述有序集合中的过期成员。
可选地,所述有序集合为Redis的Zset结构,所述向所述有序集合中插入新成员、确定所述有序集合中在所述起止时间内的成员的个数、设置所述有序集合的过期时间和删除所述有序集合中的过期成员分别通过Redis命令实现。
可选地,所述方法还包括,将实现向所述有序集合中插入新成员的Redis命令、实现确定所述有序集合中在所述起止时间内的成员的个数的Redis命令、实现设置所述有序集合的过期时间的Redis命令和实现删除所述有序集合中的过期成员的Redis命令整合成一个请求包,发送至Redis服务器处理。
为实现上述目的,根据本发明实施例的另一方面,提供一种接口调用计数装置,包括:成员增加模块,用于接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;接收模块,用于接收计数指令,所述计数指令包括计数的起止时间;计数模块,用于根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数。
可选地,所述有序集合中的成员具有三个属性:键、次序和值;所述成员增加模块根据如下过程确定所述三个属性:根据所述接口调用指令,确定所述键;根据当前时间,确定所述次序;根据所述当前时间和随机数,确定所述值。
可选地,所述成员增加模块根据如下过程确定所述三个属性:根据所述接口调用指令,确定接口名和用户标识;根据所述接口名和用户标识,确定所述键;获取当前时间戳,将所述当前时间戳作为所述次序;根据当前时间戳和随机数,确定所述值。
可选地,所述装置还包括设置模块和删除模块,所述设置模块用于设置所述有序集合的过期时间;所述删除模块用于响应于删除指令,删除所述有序集合中的过期成员。
可选地,所述有序集合为Redis的Zset结构,所述成员增加模块、计数模块、设置模块和删除模块分别通过Redis命令实现。
可选地,所述装置还包括整合模块,用于将实现成员增加模块的Redis命令、实现计数模块的Redis命令、实现设置模块的Redis命令和实现删除模块的Redis命令整合成一个请求包,发送至Redis服务器处理。
为实现上述目的,根据本发明实施例的另一方面,提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的接口调用计数方法。
为实现上述目的,根据本发明实施例的另一方面,提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的接口调用计数方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;接收计数指令,所述计数指令包括计数的起止时间;根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数的技术手段,所以克服了现有技术中计数不准确,操作复杂以及耗时大的技术问题,进而达到计数处理过程简单,耗时少,结果准确,而且易于维护的技术效果。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的接口调用计数方法的主要流程的示意图;
图2是根据本发明另一实施例的接口调用计数方法的主要流程的示意图;
图3是根据本发明实施例的接口调用计数装置的主要模块的示意图;
图4是本发明实施例可以应用于其中的示例性系统架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的接口调用计数方法的主要流程的示意图。如图1所示,该方法包括:
步骤S101:接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;
步骤S102:接收计数指令,所述计数指令包括计数的起止时间;
步骤S103:根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数。
本发明实施例的接口调用计数方法,可以应用于注册系统、登录系统、验证码系统或风控系统等具有计数需求的系统中。例如,以验证码系统为例,该方法可以对请求验证码图片的接口、刷新验证码的接口或检查验证码是否正确的接口进行计数。
对于步骤S101,在所述有序集合中,每个成员都具有三个属性,分别是:键、次序和值。
作为具体的示例,所述有序集合可以为Redis的Zset结构。其中,Redis是一个Key-Value(键-值)存储系统,它可以存储键与5中不同类型的值之间的映射。它支持存储的值的类型包括String(字符串)、List(列表)、Set(集合)、Zset(sorted set,有序集合)、Hash(散列)。Zset不允许重复的成员,且每个成员都会关联一个分数,通过该分数来为集合中的成员进行从小到大的排序。在本实施例中,上述三个属性中的次序为所述分数。
在本实施例中,键可以根据接口调用指令确定,次序可以根据当前时间确定,值可以根据当前时间和随机数确定。
具体的,接口调用指令可以包括被调用的接口的名称和用户标识,根据该接口名称和用户标识可以确定所述键,例如通过拼接接口的名称和用户标识得到键。其中,所述用户标识用来区分用户的身份特征。例如,该用户标识可以是该用户的IP地址、用户名、设备ID或设备指纹(设备指纹是指可以用于唯一标识出该设备的设备特征或者独特的设备标识)等信息。在可选的实施例中,可以以上述一种信息例如IP地址作为用户标识,也可以以多种信息的组合例如IP地址、用户名和设备ID的组合作为用户标识。以多种信息的组合作为用户标识可以提高某些用户抢占资源的难度,降低风险。作为具体的示例,键为10.8.12.232@REFRESH,表示IP地址为10.8.12.232的用户的一次刷新验证码接口调用请求。
所述次序可以由当前时间戳确定。时间戳(timestamp)是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
所述值可以通过当前时间戳和随机数确定,例如通过拼接当前时间戳和随机数进行得到所述值。因为Zset的成员不能重复,而通过当前时间戳和随机数拼接的方式确定值,重复的可能性几乎为零。作为具体的示例,当前时间戳timestamp为1509104637,随机数rand=8675367,则值为15091046378675367。
用户每调用一次接口,就会收到一条接口调用指令,例如,用户每刷新一次验证码,都会接收到关于验证码刷新接口的调用指令。当接收到接口调用指令时,向有序集合中插入新成员。例如,可以通过Redis命令“zadd key timestamp value”插入一个新成员。
对于步骤S103,根据计数指令中的起止时间确定有序集合中在所述起止时间内的成员的个数,所述个数就是该接口在所述起止时间内被调用的次数。例如通过Redis命令“zcount key timestamp-60 timestamp”获得最近1分钟内该接口的调用次数。
本发明实施例中,可以只创建一个有序集合就能确定不同的时间区间内的接口调用次数。
本发明实施例的接口调用计数方法,因为采用创建有序集合,其中,所述有序集合中的成员唯一并且按照时间顺序排列;接收接口调用指令,向所述有序集合中插入新成员;接收计数指令,所述计数指令包括计数的起止时间;根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数的技术手段,所以克服了现有技术中计数不准确,操作复杂以及耗时大的技术问题,进而达到计数处理过程简单,耗时少,结果准确,而且易于维护的技术效果。
在可选的实施例中,所述方法还包括:
设置所述有序集合的过期时间;
响应于删除指令,删除所述有序集合中的过期成员。
本发明实施例可以在每一次向有序集合插入新成员时,重新设置该有序集合的过期时间。该操作的目的是防止用户在一天之内不再对该接口进行调用时,该有序集合中的成员对内存资源的占用和浪费。又因为在每一次向有序集合插入新成员时,重新设置该有序集合的过期时间,所以如果该用户持续对该接口进行调用,则该有序集合会一直存在。
继续以Zset结构为例,可以通过Redis命令“expire key 86400”设置该有序集合的过期时间为一天,其中,86400是指一天的秒数。
另外,本发明实施例还可以基于删除指令,删除所述有序集合中的过期成员。例如,通过命令“zremrangebyscore key 0 timestamp-86399”删除Zset中超过1天的成员。该命令可以看作是“zremrangebyscore key 0 timestamp-86400-1”,减1的作用就是不删除刚好是1天前这一刻的记录。
在可选的实施例中,所述方法还包括,将实现向所述有序集合中插入新成员的Redis命令、实现确定所述有序集合中在所述起止时间内的成员的个数的Redis命令、实现设置所述有序集合的过期时间的Redis命令和实现删除所述有序集合中的过期成员的Redis命令整合成一个请求包,发送至Redis服务器处理。例如,采用Redis的pipeline处理方式,将以上所有Redis命令整合成一个网络请求包,发送到Redis服务器处理。其中,pipeline是指Redis中的一种传输方式,将多条Redis命令组合成同一个网络请求包。
本发明实施例将上述多个Redis命令整合成一个请求包,发送到Redis服务器处理,这种方式极大的减少了网络往返时延,特别是在跨机房处理中,避免了机房之间的高传输时延影响了计数处理整体耗时,提高了性能的同时也减少了网络请求失败率。
请参考图2,以Zset为有序集合和以IP地址为用户标识为例说明本发明实施例的接口调用计数方法。
步骤S201:.从计数请求数据中提取IP地址和接口名interface_name,确定出Zset成员的键,例如键为10.8.12.232@REFRESH,表示IP地址为10.8.12.232的用户的一次刷新验证码接口调用请求。
步骤S202:计算当前系统的时间戳timestamp,作为Zset成员的分数score,该分数即为所述成员的次序。
步骤S203:生成一个随机数rand,拼接timestamp和rand得到Zset的值value,例如当前timestamp为1509104637,随机数rand=8675367,那么value=15091046378675367。因为Zset的值value不能重复,而通过时间戳和随机数拼接的方式生成value,重复的可能性几乎为零。
步骤S204:通过Redis命令“zadd key timestamp value”插入一个新成员。
步骤S205:通过Redis命令“expire key 86400”设置该Zset的过期时间为一天。因为,在本实施例中计数的最大时间区间为1天,该操作的目的是防止该IP之后不会对该接口进行请求时,Zset中的数据对内存资源的占用和浪费。而且,因为每一次计数处理都会重新设置该过期时间,所以如果该IP的用户持续请求,该Zset会一直存在。
步骤S206:判断是否对过期成员进行删除,若是执行步骤S207,若否,则返回执行步骤S201。
步骤S207:通过Redis命令“zremrangebyscore key 0 timestamp-86399”对超过一天的成员进行删除操作,避免对内存资源的占用。
本发明实施例只需要创建一个Zset就能实现不同的时间区间的计数,相比于现有技术对于不同的时间区间需要创建不同的List的计数方式更简单,更高效。例如对于IP为10.8.12.232的用户的一次登录请求,需要对以下三个时间区间的List通过rpush命令插入成员:
10.8.12.232@LOGIN_MINUTE_LIMIT;
10.8.12.232@LOGIN_HOUR_LIMIT;
10.8.123.232@LOGIN_DAY_LIMIT;
而本发明实施例只需要向建一个通过Zset插入新成员,在确定不同时间区间内接口调用次数时只需要更改zcount命令中的参数。例如,确定最近1分钟内的接口调用次数的命令为“zremrangebyscore key 0 timestamp-86399”,确定最近1小时内的接口调用次数的命令为“zremrangebyscore key 3600 timestamp-86399”。
本发明实施例可以将多条Redis命令整合成一个请求包,而List在插入成员时,需要先获取List的成员数量,如果数量为0,那么需要先创建该List并设置过期时间,如果数量大于0,那么就直接插入新成员。对于List,获取成员数量和插入新成员这两个操作不能作为一次Redis的pipeline请求发送给Redis服务器。因此,本发明实施例可以减少网络往返时延和网络传输次数,进而可以降低请求失败率,特别是在跨机房处理中,避免了机房之间的高传输时延影响了计数处理整体耗时,提高了性能的同时也减少了网络请求失败率。
本发明实施例的接口调用计数方法更准确,该方法中Zset的过期时间为一天,避免了出现当前List过期删除后,该List中的成员计数次数无法累加到下一个相同时间区间内的List中的情况。
另外,通过时间戳作为Zset成员的score,通过zcount命令可以很方便的计算指定时间区间内的接口调用次数。例如,获取最近1分钟内的接口调用次数,可以通过命令“zcount key timestamp-60 timestamp”获得。
本发明实施例的方法,仅仅通过一个Redis的Zset结构就可以实现不同时间区间内的计数,而且只需要一次Redis的pipeline请求就可以完成计数处理,减少了网络的RTT时间(Round-Trip Time,网络往返时延),同时也减少了网络请求失败率。由此可知,本发明实施例的方法计数处理过程更加简单,结果也更加准确。
图3是根据本发明实施例的接口调用计数装置的主要模块的示意图。如图3所示,该装置300包括:
成员增加模块301,用于接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;
接收模块302,用于接收计数指令,所述计数指令包括计数的起止时间;
计数模块303,用于根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数。
可选地,所述有序集合中的成员包括三个属性:键、次序和值成员;所述成员增加模块301根据如下过程确定所述三个属性:根据所述接口调用指令,确定所述键;根据当前时间,确定所述次序;根据所述当前时间和随机数,确定所述值。
可选地,所述成员增加模块301根据如下过程确定所述三个属性:根据所述接口调用指令,确定接口名和用户标识;根据所述接口名和用户标识,确定所述键;获取当前时间戳,将所述当前时间戳作为所述次序;成员根据当前时间戳和随机数,确定所述值。
可选地,所述装置还包括设置模块和删除模块,所述设置模块用于设置所述有序集合的过期时间;所述删除模块用于响应于删除指令,删除所述有序集合中的过期成员。
可选地,所述有序集合为Redis的Zset结构,所述成员增加模块301、计数模块303、设置模块和删除模块分别通过Redis命令实现。
可选地,所述装置还包括整合模块,用于将实现成员增加模块的Redis命令、实现计数模块的Redis命令、实现设置模块的Redis命令和实现删除模块的Redis命令整合成一个请求包,发送至Redis服务器处理。
本发明实施例的接口调用计数装置,因为采用接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;接收计数指令,所述计数指令包括计数的起止时间;根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数的技术手段,所以克服了现有技术中计数不准确,操作复杂以及耗时大的技术问题,进而达到计数处理过程简单,耗时少,结果准确,而且易于维护的技术效果。
上述装置可执行本发明实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例所提供的方法。
图4示出了可以应用本发明实施例的接口调用计数方法或接口调用计数装置的示例性系统架构400。
如图4所示,系统架构400可以包括终端设备401、402、403,网络404和服务器405。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息)反馈给终端设备。
需要说明的是,本发明实施例所提供的接口调用计数方法一般由服务器405执行,相应地,接口调用计数装置一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机系统500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括发送模块、获取模块、确定模块和第一处理模块。其中,这些模块的名称在某种情况下并不构成对该单元本身的限定,例如,发送模块还可以被描述为“向所连接的服务端发送图片获取请求的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备可以执行本发明实施例的接口调用计数方法。
该方法包括:接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;接收计数指令,所述计数指令包括计数的起止时间;根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数。
本发明实施例的技术方案,通过接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;接收计数指令,所述计数指令包括计数的起止时间;根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数的技术手段,所以克服了现有技术中计数不准确,操作复杂以及耗时大的技术问题,进而达到计数处理过程简单,耗时少,结果准确,而且易于维护的技术效果。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (14)
1.一种接口调用计数方法,其特征在于,包括:
接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;
接收计数指令,所述计数指令包括计数的起止时间;
根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数。
2.根据权利要求1所述的方法,所述有序集合中的成员具有三个属性:键、次序和值;
所述三个属性根据如下过程确定:
根据所述接口调用指令,确定所述键;
根据当前时间,确定所述次序;
根据所述当前时间和随机数,确定所述值。
3.根据权利要求2所述的方法,其特征在于,
根据所述接口调用指令,确定所述键包括:根据所述接口调用指令,确定接口名和用户标识;根据所述接口名和用户标识,确定所述键;
根据当前时间,确定所述次序包括:获取当前时间戳,将所述当前时间戳作为所述次序;
根据所述当前时间和随机数,确定所述值包括:根据当前时间戳和随机数,确定所述值。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
设置所述有序集合的过期时间;
响应于删除指令,删除所述有序集合中的过期成员。
5.根据权利要求4所述的方法,其特征在于,所述有序集合为Redis的Zset结构,
所述向所述有序集合中插入新成员、确定所述有序集合中在所述起止时间内的成员的个数、设置所述有序集合的过期时间和删除所述有序集合中的过期成员分别通过Redis命令实现。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括,将实现向所述有序集合中插入新成员的Redis命令、实现确定所述有序集合中在所述起止时间内的成员的个数的Redis命令、实现设置所述有序集合的过期时间的Redis命令和实现删除所述有序集合中的过期成员的Redis命令整合成一个请求包,发送至Redis服务器处理。
7.一种接口调用计数装置,其特征在于,包括:
成员增加模块,用于接收接口调用指令,向所述有序集合中插入新成员,其中,所述有序集合中的成员唯一并且按照时间顺序排列;
接收模块,用于接收计数指令,所述计数指令包括计数的起止时间;
计数模块,用于根据所述计数指令确定所述有序集合中在所述起止时间内的成员的个数,将所述成员的个数作为所述接口调用的次数。
8.根据权利要求7所述的装置,所述有序集合中的成员具有三个属性:键、次序和值;
所述成员增加模块根据如下过程确定所述三个属性:
根据所述接口调用指令,确定所述键;
根据当前时间,确定所述次序;
根据所述当前时间和随机数,确定所述值。
9.根据权利要求8所述的装置,其特征在于,所述成员增加模块根据如下过程确定所述三个属性:
根据所述接口调用指令,确定接口名和用户标识;根据所述接口名和用户标识,确定所述键;
获取当前时间戳,将所述当前时间戳作为所述次序;
根据所述当前时间戳和随机数,确定所述值。
10.根据权利要求7-9中任一项所述的装置,其特征在于,所述装置还包括设置模块和删除模块,
所述设置模块用于设置所述有序集合的过期时间;
所述删除模块用于响应于删除指令,删除所述有序集合中的过期成员。
11.根据权利要求10所述的装置,其特征在于,所述有序集合为Redis的Zset结构,
所述成员增加模块、计数模块、设置模块和删除模块分别通过Redis命令实现。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括整合模块,用于将实现成员增加模块的Redis命令、实现计数模块的Redis命令、实现设置模块的Redis命令和实现删除模块的Redis命令整合成一个请求包,发送至Redis服务器处理。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810072556.XA CN110083501A (zh) | 2018-01-25 | 2018-01-25 | 接口调用计数方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810072556.XA CN110083501A (zh) | 2018-01-25 | 2018-01-25 | 接口调用计数方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110083501A true CN110083501A (zh) | 2019-08-02 |
Family
ID=67411982
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810072556.XA Pending CN110083501A (zh) | 2018-01-25 | 2018-01-25 | 接口调用计数方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110083501A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727727A (zh) * | 2019-10-15 | 2020-01-24 | 深圳前海微众银行股份有限公司 | 一种数据库的统计方法及装置 |
CN111651441A (zh) * | 2020-05-11 | 2020-09-11 | 北京小米移动软件有限公司 | 数据处理方法及装置、计算机存储介质 |
CN113918623A (zh) * | 2021-11-23 | 2022-01-11 | 中原银行股份有限公司 | 风控相关行为的次数计算方法及其装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160105503A1 (en) * | 2014-10-11 | 2016-04-14 | Papaya Mobile, Inc. | Data Synchronization Methods and Systems |
CN106227765A (zh) * | 2016-07-13 | 2016-12-14 | 广州唯品会网络技术有限公司 | 时间窗口累计的实现方法 |
CN106649602A (zh) * | 2016-11-25 | 2017-05-10 | 掌阅科技股份有限公司 | 业务对象数据处理方法、装置和服务器 |
CN106776955A (zh) * | 2016-12-02 | 2017-05-31 | 北京中交兴路车联网科技有限公司 | 一种数据存储和检索的方法及装置 |
CN107463612A (zh) * | 2017-06-29 | 2017-12-12 | 北京北信源软件股份有限公司 | 高并发redis数据库操作方法及系统 |
-
2018
- 2018-01-25 CN CN201810072556.XA patent/CN110083501A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160105503A1 (en) * | 2014-10-11 | 2016-04-14 | Papaya Mobile, Inc. | Data Synchronization Methods and Systems |
CN106227765A (zh) * | 2016-07-13 | 2016-12-14 | 广州唯品会网络技术有限公司 | 时间窗口累计的实现方法 |
CN106649602A (zh) * | 2016-11-25 | 2017-05-10 | 掌阅科技股份有限公司 | 业务对象数据处理方法、装置和服务器 |
CN106776955A (zh) * | 2016-12-02 | 2017-05-31 | 北京中交兴路车联网科技有限公司 | 一种数据存储和检索的方法及装置 |
CN107463612A (zh) * | 2017-06-29 | 2017-12-12 | 北京北信源软件股份有限公司 | 高并发redis数据库操作方法及系统 |
Non-Patent Citations (1)
Title |
---|
SUNPEAK: "实时业务风控系统", pages 1 - 2, Retrieved from the Internet <URL:https://www.jianshu.com/p/efcf3ce832c4> * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110727727A (zh) * | 2019-10-15 | 2020-01-24 | 深圳前海微众银行股份有限公司 | 一种数据库的统计方法及装置 |
CN110727727B (zh) * | 2019-10-15 | 2023-01-10 | 深圳前海微众银行股份有限公司 | 一种数据库的统计方法及装置 |
CN111651441A (zh) * | 2020-05-11 | 2020-09-11 | 北京小米移动软件有限公司 | 数据处理方法及装置、计算机存储介质 |
CN111651441B (zh) * | 2020-05-11 | 2023-05-09 | 北京小米移动软件有限公司 | 数据处理方法及装置、计算机存储介质 |
CN113918623A (zh) * | 2021-11-23 | 2022-01-11 | 中原银行股份有限公司 | 风控相关行为的次数计算方法及其装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110019211A (zh) | 关联索引的方法、装置和系统 | |
CN110019125A (zh) | 数据库管理的方法和装置 | |
CN111427971B (zh) | 用于计算机系统的业务建模方法、装置、系统和介质 | |
CN110427304A (zh) | 用于银行系统的运维方法、装置、电子设备以及介质 | |
CN110083501A (zh) | 接口调用计数方法和装置 | |
CN109241033A (zh) | 创建实时数据仓库的方法和装置 | |
CN110019437A (zh) | 一种导出数据的方法和系统 | |
CN109002385A (zh) | 用于数据流系统的压力测试方法和装置 | |
CN109918191A (zh) | 一种业务请求防频的方法和装置 | |
CN110019346A (zh) | 一种基于双主数据库的数据处理方法和装置 | |
CN110019263A (zh) | 信息存储方法和装置 | |
CN109144992A (zh) | 一种数据存储的方法和装置 | |
CN108959294B (zh) | 一种访问搜索引擎的方法和装置 | |
CN110928594A (zh) | 服务开发方法和平台 | |
CN110245014A (zh) | 数据处理方法和装置 | |
CN110019363A (zh) | 一种校验数据的方法和装置 | |
CN107911443A (zh) | 一种会话信息处理方法、装置、服务器和可读存储介质 | |
CN107729394A (zh) | 基于Hadoop集群的数据集市管理系统及其使用方法 | |
CN115391343A (zh) | 账单数据处理方法、装置、电子设备和存储介质 | |
CN108959309B (zh) | 数据分析的方法和装置 | |
CN109688174A (zh) | 一种基于多代理商服务的虚拟业务实现方法和装置 | |
CN115827646A (zh) | 索引配置方法、装置和电子设备 | |
CN110020166A (zh) | 一种数据分析方法及相关设备 | |
CN110309187A (zh) | 一种在saas系统上应用流式计算的方法和装置 | |
CN110399397A (zh) | 一种数据查询方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |